JPH04165537A - プログラム自動インライン展開方式 - Google Patents

プログラム自動インライン展開方式

Info

Publication number
JPH04165537A
JPH04165537A JP29313290A JP29313290A JPH04165537A JP H04165537 A JPH04165537 A JP H04165537A JP 29313290 A JP29313290 A JP 29313290A JP 29313290 A JP29313290 A JP 29313290A JP H04165537 A JPH04165537 A JP H04165537A
Authority
JP
Japan
Prior art keywords
program
program unit
call
inline expansion
line 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
JP29313290A
Other languages
English (en)
Inventor
Katsumi Yamamoto
克己 山本
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP29313290A priority Critical patent/JPH04165537A/ja
Publication of JPH04165537A publication Critical patent/JPH04165537A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は電子計算機ソステムのコンパイラにおけるプロ
グラム自動インライン展開方式に関するものである。
〔従来の技術〕
コンパイラにおける目的プログラムの最適化手法の一つ
としてインライン展開がある。これは、あるプログラム
単位から呼び出される他のプログラム単位の内容を、呼
び出し元のプログラム単位の中に直接に展開するもので
あり、これに基づいて生成した目的プログラムを実行す
る際にサブルーチンリンケージが不要となるため、実行
速度を向上させることができるものである。また、イン
ライン展開した部分につき他の最適化手法も適用するこ
とができ、−層の実行性能の向上を達成できる。ただし
、このような利点がある反面、目的プログラムのサイズ
が大きくなることから、限られたメモリ容量のシステム
下で実行する場合、呼び出されるプログラム単位を全て
インライン展開の対象とすることは不経済かつ困難であ
る。よって、どのプログラム単位で呼び出されるどのプ
ログラム単位をインライン展開の対象とするかを決定す
る必要がある。
従来、インライン展開の対象とするプログラム単位は、
コンパイラを起動する場合に指示するオプションによっ
て、あるいは、原始プログラムに利用者が挿入したイン
ライン展開の指示行によって特定していた。
〔発明が解決しようとする課題〕
上述したように、従来のコンパイラにおいては、どのプ
ログラム単位で呼び出されるどのプログラム単位をイン
ライン展開の対象とするかを、コンパイラ起動時のオプ
ションあるいは原始プログラム中の指示行によって特定
していたため、利用者がプログラムの動作や振る舞いを
充分に把握した上で適切に指示を与えている場合には充
分な効果があったが、そうでない場合には充分な効果が
期待できないという欠点があった。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、利用者がプログラムの動作や振る舞
いを意識することなく、最適なインライン展開を行うこ
とができるプログラム自動インライン展開方式を提供す
ることにある。
〔課題を解決するための手段〕
本発明は上記の目的を達成するため、原始プログラムを
入力し、目的プログラムに1訳するコンパイラにおいて
、 原始プログラムを解析し、どのプログラム単位からどの
プログラム単位が呼び出されるかを解析するプログラム
単位呼び出し関係解析手段と、原始プログラムを解析し
、各文の実行回数を推定する文実行回数解析手段と、 解析結果からどのプログラム単位からのどのプログラム
単位の呼び出しをインライン展開するかを決定するイン
ライン展開決定手段と、決定されたプログラム単位をそ
のプログラム単位を呼び出すプログラム単位の中に展開
するインライン展開手段とを備えるようにしている。
〔作用〕
本発明のプログラム自動インライン展開方式にあっては
、プログラム単位呼び出し関係解析手段が原始プログラ
ムを解析してどのプログラム単位からどのプログラム単
位が呼び出されるかを解析し、文実行回数解析手段が原
始プログラムを解析して各文の実行回数を推定し、イン
ライン展開決定手段が解析結果からどのプログラム単位
からのどのプログラム単位の呼び出しをインライン展開
するかを決定し、インライン展開手段が決定されたプロ
グラム単位をそのプログラム単位を呼び出すプログラム
単位の中に展開する。
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明のプログラム自動インライン展開方式を
適用したコンパイラの一実施例を示す構成図である。
第1図において、本実施例のコンパイラ1は、プログラ
ム単位呼び出し関係解析手段3および文実行回数解析手
段4を含む原始プログラム解析手段2とインライン展開
決定手段5とインライン展開手段6と構文解析手段7と
意味解析手段8とコード生成手段9とから構成され、原
始プログラム10を入力してインライン展開した原始プ
ログラム11を出力し、最絆的に実行可能な目的プログ
ラム12を出力するようになっている。なお、各手段の
機能等については、重複を避けるため、以下の動作を通
して説明することとする。
先ず、F ORT RA N言語等の高級言語で記述さ
れた原始プログラム10を用意した上でコンパイラlを
起動すると、コンパイラlの原始プログラム解析手段2
は原始プログラム10を入力し、解析を行う。
解析に際し、プログラム単位の呼び出しに関してはプロ
グラム単位呼び出し関係解析手段3を動作させ、呼び出
し関係情報を収集する。また、00文等の文を繰り返し
実行させる構文に対しては文実行回数解析手段4を動作
させ、その繰り返し回数から、各プログラム単位が1回
実行される場合の各文の実行回数(文実行回数)を求め
る。なお、繰り返し回数が原始プログラム10の情報か
らだけでは不明な場合には、例えば10回操り返すもの
と仮定する。
原始プログラム解析手段2の処理終了後、インライン展
開決定手段5はプログラム単位呼び出し関係解析手段3
が収集した呼び出し関係情報および文実行回数解析手段
4が収集した文実行回数から、どのプログラム単位から
のどのプログラム単位の呼び出しをインライン展開する
と最も効果的であるかを判断し、インライン展開する対
象を決定する。すなわち、呼び出し関係情@および文実
行回数から、最も基底となるプログラム単位を基準とし
て各プログラム単位の総合的な呼び出し回数を求め、そ
の回数が大きい順にインライン展開の対象とする。
次いで、インライン展開手段6はインライン展開決定手
段5の決定に従い、原始プログラム10に対してインラ
イン展開を行い、新たな原始プログラム11を生成して
出力する。
次いで、構文解析手段7および意味解析手段8はインラ
イン展開された後の原始プログラム11に対して構文解
析および意味解析を行い、コード生成手段9は構文解析
および意味解析の結果を基に目的プログラム12を生成
して出力する。
第2図はFORTRAN言語で記述された原始プログラ
ム10の例を示したものであり、プログラム(PROG
RAM)MA INにおいてサブルーチン(SUBRO
UTINE)Aを1回呼び出すと共に、DOループ内で
サブルーチンBを1000回呼び出し、呼び出されるサ
ブルーチンAではDoループ内でサブルーチンCを10
0回呼び出し、サブルーチンBではDoループ内でサブ
ルーチンCを10回呼び出し、サブルーチンCでは他の
プログラム単位の呼び出しを行っていない。
第3図は、第2図の原始プログラム10について、プロ
グラム単位呼び出し関係解析手段3および文実行回数解
析手段4で得られたプログラム単位呼び出し関係情報お
よび文実行回数に基づき、インライン展開決定手段5で
判断のために考慮されるプログラム単位の呼び出し関係
および呼び出し回数を図式的に示したものである。
今、サブルーチン八で呼び出されるサブルーチンCと、
サブルーチンBで呼び出されるサブルーチンCのいずれ
か一方をインライン展開の対象とするものとすると、第
2図の原始プログラム10上ではサブルーチンAにおけ
る方が100回でサブルーチンBにおける10回よりも
多いため、−見するとサブルーチン八で呼び出されるサ
ブルーチンCを対象としてしまいがちであるが、第3図
の総合的な呼び出し回数によれば、プログラムMAIN
からサブルーチンA、Bの呼び出し回数がそれぞれ1回
と1000回であるため、サブルーチンBにおける方力
<10000回でサブルーチンAにおける100回より
も圧倒的に多いことになり、サブルーチンBで呼び出さ
れるサブルーチンCをインライン展開の対象とした方が
有利であることが分る。よって、これがインライン展開
の対象となる。
〔発明の効果〕
以上説明したように、本発明のプログラム自動インライ
ン展開方式にあっては、原始プログラムからプログラム
単位呼び出し関係情報および文実行回数を解析し、これ
に基づき、総合的な呼び出し回数が最も多いプログラム
単位から優先的にインライン展開を行うようにしている
ため、利用者がプログラムの動作や振る舞いを意識する
ことなく最適なインライン展開を行うことができ、目的
プログラムの実行速度の向上を図ることができるという
効果がある。
【図面の簡単な説明】
第1図は本発明のプログラム自動インライン展開方式を
適用したコンパイラの一実施例を示す構成図、 第2図は原始プログラムの例を示す図ならびに、第3図
はプログラム単位の呼び出し関係および呼び出し回数の
例を示す図である。 図において、 1・・・コンパイラ 2・・・原始プログラム解析手段 3・・・プログラム単位呼び出し関係解析手段4・・・
文実行回数解析手段 5・・・インライン展開決定手段 6・・・インライン展開手段 7・・・構文解析手段 8・・・意味解析手段 9・・・コード生成手段 10.11・・・原始プログラム

Claims (1)

    【特許請求の範囲】
  1. (1)原始プログラムを入力し、目的プログラムに翻訳
    するコンパイラにおいて、 原始プログラムを解析し、どのプログラム単位からどの
    プログラム単位が呼び出されるかを解析するプログラム
    単位呼び出し関係解析手段と、原始プログラムを解析し
    、各文の実行回数を推定する文実行回数解析手段と、 解析結果からどのプログラム単位からのどのプログラム
    単位の呼び出しをインライン展開するかを決定するイン
    ライン展開決定手段と、 決定されたプログラム単位をそのプログラム単位を呼び
    出すプログラム単位の中に展開するインライン展開手段
    とを備えたことを特徴とするプログラム自動インライン
    展開方式。(2)文実行回数解析手段は、原始プログラ
    ムの情報から各文の実行回数が不明な場合に、予め定め
    た値を実行回数とすることを特徴とした請求項1記載の
    プログラム自動インライン展開方式。
JP29313290A 1990-10-30 1990-10-30 プログラム自動インライン展開方式 Pending JPH04165537A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29313290A JPH04165537A (ja) 1990-10-30 1990-10-30 プログラム自動インライン展開方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29313290A JPH04165537A (ja) 1990-10-30 1990-10-30 プログラム自動インライン展開方式

Publications (1)

Publication Number Publication Date
JPH04165537A true JPH04165537A (ja) 1992-06-11

Family

ID=17790831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29313290A Pending JPH04165537A (ja) 1990-10-30 1990-10-30 プログラム自動インライン展開方式

Country Status (1)

Country Link
JP (1) JPH04165537A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63115236A (ja) * 1986-10-31 1988-05-19 Nec Corp オブジエクト選択方式
JPH01103742A (ja) * 1987-10-16 1989-04-20 Hitachi Ltd 最適コンパイル方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63115236A (ja) * 1986-10-31 1988-05-19 Nec Corp オブジエクト選択方式
JPH01103742A (ja) * 1987-10-16 1989-04-20 Hitachi Ltd 最適コンパイル方式

Similar Documents

Publication Publication Date Title
US5481723A (en) System and method for controlling execution of nested loops in parallel in a computer including multiple processors, and compiler for generating code therefore
JPS6184740A (ja) 汎用オブジエクトコ−ド生成方式
JPH09128246A (ja) コンパイラ装置
JPH04165537A (ja) プログラム自動インライン展開方式
JP3032030B2 (ja) ループ最適化方法及び装置
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JPH1040112A (ja) 動的情報利用型プログラム最適化装置
JPH0573335A (ja) プログラムの自動インライン展開方式
JPH04336333A (ja) 原始プログラムの自動インライン展開方式
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH08263300A (ja) インライン展開方式
JP2003067195A (ja) 最適化コンパイル方法及び最適化コンパイル装置
JPH09319587A (ja) 計測情報を使ったポストオプティマイズによるプログラムの生成方式
JP3547550B2 (ja) 情報処理装置
JPH05216680A (ja) 文の重み情報による並列化情報算出処理方式
JPH03144830A (ja) 並列処理方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPH03116241A (ja) コンパイラ
JPH08115220A (ja) ループ最適化方法
JPH02135529A (ja) コンパイル方式
JPH10312291A (ja) コンパイラ装置
JP2518504B2 (ja) 目的プログラム生成装置
JPH05120029A (ja) 最適化方法
JPH04354056A (ja) 条件ベクトル化並列化処理方式
JPH0399330A (ja) 手続きインライン展開方式