JPH10326193A - インライン展開関数の最適化のためのコンパイル方法 - Google Patents

インライン展開関数の最適化のためのコンパイル方法

Info

Publication number
JPH10326193A
JPH10326193A JP13472497A JP13472497A JPH10326193A JP H10326193 A JPH10326193 A JP H10326193A JP 13472497 A JP13472497 A JP 13472497A JP 13472497 A JP13472497 A JP 13472497A JP H10326193 A JPH10326193 A JP H10326193A
Authority
JP
Japan
Prior art keywords
argument
inline
inline expansion
dependency
expansion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP13472497A
Other languages
English (en)
Inventor
Masato Mimori
征人 三森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP13472497A priority Critical patent/JPH10326193A/ja
Publication of JPH10326193A publication Critical patent/JPH10326193A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】関数をインライン展開することにより引数の依
存関係が新たに発生する可能性がある場合は、それらの
引数を用いた処理が最適化対象外となってしまい、移動
・削除等を伴う最適化処理が行なえなくなる。 【解決手段】引数解析部106は、インライン展開する
関数の引数をインライン展開前に参照して解析する。全
く別の引数として宣言されている場合には、それらの引
数に“依存無し”の情報を付加する。インライン展開部
107では、“依存無し”付き情報を、インライン展開
後の引数にも設定する。最適化部108では、インライ
ン展開された関数の引数に依存関係がある場合でも、引
数に“依存無し”の情報が設定されている場合には、そ
れらの引数を使用している処理も最適化の対象とする。
本発明により、インライン展開前の最適化の効果を保っ
たまま、インライン展開をした為に行われなかった最適
化も行なうことが出来、最適化の効果が向上する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
【0002】
【従来の技術】関数のインライン展開において、インラ
イン展開前では全く別の引数として宣言していても、そ
の関数を呼び出す際の引数間に依存関係がある場合は、
同一領域を参照する可能性がある為、インライン展開後
の引数間にも依存関係があるものと判断され、それらの
引数を用いた処理は最適化対象外となる。
【0003】
【発明が解決しようとする課題】従来の技術では、関数
をインライン展開することにより引数の依存関係が新た
に発生する場合は、それらの引数を用いた処理が最適化
対象外となってしまい、移動・削除等を伴う最適化処理
が行なえなくなる。その為、インライン展開を行なわな
い場合よりも性能が劣ってしまうという現象が発生する
場合がある。
【0004】図2のFortranソースプログラムに
おいて、関数FUNCをインライン展開した場合のソー
スイメージを図3に示す。
【0005】図2のFortranソースプログラムを
インライン展開を行なわないでコンパイルした場合は、
関数FUNCの引数X、Yには依存関係が無いので、最
適化を行なうことが出来、24行目の文はDOループの
外(22行目)へ移動できる。しかし、図3のようにイ
ンライン展開を行なった場合は、引数X、Yは同一名称
をもつ配列A(J)、A(K)に置き換えられるため、
元々別変数(X、Y)であった引数に依存関係が発生す
る可能性が生じるため最適化対象外となり、13行目は
DOループの外へ移動出来なくなってしまう。
【0006】本発明の目的は、今までは依存関係が無か
った引数が、インライン展開されることで新たに依存関
係が発生する可能性を持つ引数を解析し、依存関係が発
生しうる場合でもインライン展開前の引数と同じく、依
存関係が無いものとして扱うことである。
【0007】本発明によるインライン展開結果のソース
イメージを図4に示す。
【0008】A(J)とA(K)に置き換えられた引数
X、Yには依存関係が無かった為、置き換えられた後の
A(J)とA(K)にも依存関係は無いと判断し、最適
化の対象としたことで、DOループの外(12行目)に
移動することができる。
【0009】
【課題を解決するための手段】インライン展開する関数
の引数をインライン展開前に参照し、全く別の引数とし
て宣言されているか否かを解析する。全く別の引数とし
て宣言されている場合には、それらの引数に“依存無
し”の情報を付加する。
【0010】ただし、インライン展開後の引数の依存関
係は無いというユーザからコンパイラへの指示がある場
合は、引数の依存関係を行なわずに、引数全てに“依存
無し”の情報を付加する。
【0011】インライン展開処理では、インライン展開
しようとしている関数の引数に設定されている“依存な
し”の情報を参照し、インライン展開後の引数にもその
情報を設定する。
【0012】最適化処理では、インライン展開された関
数の引数に依存関係が発生する可能性がある場合でも、
“依存無し”の情報が設定されている場合には、それら
の引数間には依存関係が無いものとして最適化を実施す
る。
【0013】
【発明の実施の形態】図1は本発明を用いたコンパイラ
の構成図、図2は本発明の具体例を説明するためのFo
rtranソースプログラムである。
【0014】図1において、101は記憶装置上に格納
されているソースプログラム、102はコンパイラ、1
10はコンパイルされて記憶装置上に格納される目的プ
ログラムである。コンパイラ102は記憶装置からソー
スプログラムを読み込み、所定の目的プログラムを記憶
装置上に生成する。この時コンパイラは次の処理を行な
う。
【0015】構文解析部103は、ソースプログラム
101を読み込み構文解析を行いメモリ上に中間コード
104を生成する。
【0016】インライン展開最適化部105では、以
下の手順でインライン展開を行なう。
【0017】1.引数解析部106は、中間コード10
4を入力して、全く別の引数として宣言されているか否
かを解析し、全く別の引数として宣言されている場合に
は“依存無し”という解析情報を中間コード104に設
定し出力する。(図5) 2.インライン展開部107は、中間コード104を入
力し、関数をインライン展開し、その結果を中間コード
104に出力する。その際、1.で設定された引数の解
析情報も中間コード104に出力する。(図6) 最適化部108では、中間コード104を入力し最適
化を行なう。その際、インライン展開部107で設定し
た引数の解析情報も参照して、“依存無し”の情報が設
定されている引数の場合は、それらの引数を用いた処理
も最適化の対象として最適化を行い、中間コード104
に出力する。(図7) 目的プログラム生成部109は、中間コード104を
入力し、目的プログラム110を記憶装置上に出力す
る。
【0018】本発明では、インライン展開最適化部10
5の引数解析部106の処理を追加し、最適化部108
で引数の解析情報を参照して、最適化を行なう機能を追
加する。
【0019】
【発明の効果】本発明のような引数の解析により、イン
ライン展開前の最適化の効果を保ったまま、インライン
展開をした為に行なわれなかった最適化も行なうことが
出来、インライン展開による最適化の効果がさらに向上
する。
【図面の簡単な説明】
【図1】本発明で採用したコンパイラの構成である。
【図2】本発明の具体例を説明するためのFortra
nソースプログラムである。
【図3】図2のソースプログラムを従来の技術でインラ
イン展開した結果である。(ソースイメージ)
【図4】図3のソースプログラムを本発明で処理してイ
ンライン展開した結果である。(ソースイメージ)
【図5】本発明で、図2のソースプログラムをコンパイ
ルした際に、図1の引数解析部が出力する中間コードで
ある。
【図6】本発明で、図2のソースプログラムをコンパイ
ルした際に、図1のインライン展開部が出力する中間コ
ードである。
【図7】本発明で、図2のソースプログラムをコンパイ
ルした際に、図1の最適化部が出力する中間コードであ
る。
【符号の説明】
101…ソースプログラム、102…コンパイラ本体、
103…構文解析部、104…中間コード、 10
5…インライン展開最適化部、106…引数解析部、
107…インライン展開部、108…最適化部、1
09…目的プログラム生成部、110…目的プログラ
ム。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】アドレス渡しの引数を持つ関数をインライ
    ン展開できるコンパイラの処理において、インライン展
    開を行なうことによって引数の依存関係が新たに発生す
    る可能性がある場合でも、インライン展開前の引数の依
    存関係を解析し、お互いに影響を及ぼさないと判断した
    場合は、展開後も依存関係は無いものとし、それらの引
    数を用いた処理も最適化対象にすることを特徴とするコ
    ンパイル方法。
  2. 【請求項2】ユーザからのコンパイラへの指示により、
    請求項1におけるインライン展開によって発生する依存
    関係の解析処理を行なわず、インライン展開による引数
    の新たな依存関係が発生しないとみなすことが出来るこ
    とを特徴とするコンパイル方法。
JP13472497A 1997-05-26 1997-05-26 インライン展開関数の最適化のためのコンパイル方法 Pending JPH10326193A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13472497A JPH10326193A (ja) 1997-05-26 1997-05-26 インライン展開関数の最適化のためのコンパイル方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13472497A JPH10326193A (ja) 1997-05-26 1997-05-26 インライン展開関数の最適化のためのコンパイル方法

Publications (1)

Publication Number Publication Date
JPH10326193A true JPH10326193A (ja) 1998-12-08

Family

ID=15135126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13472497A Pending JPH10326193A (ja) 1997-05-26 1997-05-26 インライン展開関数の最適化のためのコンパイル方法

Country Status (1)

Country Link
JP (1) JPH10326193A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100370425C (zh) * 2005-02-18 2008-02-20 国际商业机器公司 将本机函数内嵌到编译的Java代码中的方法和系统
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100370425C (zh) * 2005-02-18 2008-02-20 国际商业机器公司 将本机函数内嵌到编译的Java代码中的方法和系统
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation

Similar Documents

Publication Publication Date Title
US8225299B2 (en) Program converting apparatus, method, and program
US6292939B1 (en) Method of reducing unnecessary barrier instructions
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
JP2921190B2 (ja) 並列実行方式
JPH11212797A (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
Sathyanathan et al. Incremental whole program optimization and compilation
US20170206068A1 (en) Program optimization based on directives for intermediate code
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH10340193A (ja) 言語処理装置、言語処理方法およびその記録媒体
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JP2003067195A (ja) 最適化コンパイル方法及び最適化コンパイル装置
JPH08221276A (ja) コンパイラ
JP3922699B2 (ja) ループ内不変な式の移動に関する最適化方式およびプログラム
JPH10312291A (ja) コンパイラ装置
JPH07234794A (ja) マルチプロセッサシステムにおける目的プログラム生成方法
JPH0573335A (ja) プログラムの自動インライン展開方式
JP2007233805A (ja) プログラム変換システム
JPH04343140A (ja) コンパイラの最適化処理方法
JPH08263298A (ja) コンパイラ装置
Matos et al. Data Flow Analysis applied to optimize generic workflow problems
JPH0736708A (ja) インライン展開方式
JPH11250035A (ja) 編集方式及び方法
JPH04165537A (ja) プログラム自動インライン展開方式