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

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

Info

Publication number
JPH0573335A
JPH0573335A JP3263032A JP26303291A JPH0573335A JP H0573335 A JPH0573335 A JP H0573335A JP 3263032 A JP3263032 A JP 3263032A JP 26303291 A JP26303291 A JP 26303291A JP H0573335 A JPH0573335 A JP H0573335A
Authority
JP
Japan
Prior art keywords
program
program unit
unit
inline expansion
inline
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
JP3263032A
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 JP3263032A priority Critical patent/JPH0573335A/ja
Publication of JPH0573335A publication Critical patent/JPH0573335A/ja
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E60/00Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
    • Y02E60/30Hydrogen technology
    • Y02E60/50Fuel cells

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 実行回数の多いと考えられるプログラム単位
を簡単な論理でコンパイル時に求め、それをインライン
展開する。 【構成】 コンパイラ1のオプション解析手段11はオ
プション群2を入力して解析する。インライン展開決定
手段12は、原始プログラム3を入力して、オプション
群2に含まれるオプションで指定されたプログラム単位
を除くプログラム単位を呼び出していないプログラム単
位を捜して、そのプログラム単位をインライン展開の対
象と決定し、インライン展開手段13はインライン展開
決定手段12により決定されたプログラム単位を、呼び
出すプログラム単位の中に展開して、原始プログラム4
を作成する。そして、構文解析手段14および意味解析
手段15が原始プログラム4に対して構文解析および意
味解析を行い、コード生成手段16が構文解析および意
味解析の結果を基に目的プログラム5を作成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子計算機システムの
コンパイラにおけるプログラムの自動インライン展開方
式に関するものである。
【0002】
【従来の技術】コンパイラにおける目的プログラムの最
適化手法の一つとしてインライン展開がある。これは、
あるプログラム単位から呼び出される他のプログラム単
位の内容を、呼び出し元のプログラム単位の中に直接展
開するものであり、これに基づいて生成した目的プログ
ラムを実行する際にサブルーチンリンケージが不要とな
るため、実行速度を向上させることができるものであ
る。また、インライン展開した部分につき他の最適化手
法も適用することができ、一層の実行性能の向上を達成
することができる。ただし、このような利点がある反
面、目的プログラムのサイズが大きくなることから、限
られたメモリ容量のシステム下で実行する場合、呼び出
されるプログラム単位を全てインライン展開の対象とす
ることは不経済かつ困難である。そこで、どのプログラ
ム単位で呼び出されるどのプログラム単位をインライン
展開の対象とするかを決定する必要がある。
【0003】従来においては、このインライン展開すべ
きプログラム単位の決定は以下のような方法で行われて
いる。
【0004】 コンパイラを起動する場合のオプショ
ンで利用者が指示する。 原始プログラムに利用者が挿入したインライン展開
を指示する指示行により利用者が指示する。 翻訳前にプログラムを1回実行することにより得ら
れるプログラムの振る舞い情報により自動的に決定す
る。 原始プログラムを静的かつ詳細に解析し、各文の実
行回数を推定し、呼び出し回数が多いプログラム単位を
インライン展開すべきプログラム単位であると自動的に
選択する。
【0005】
【発明が解決しようとする課題】上記のコンパイラを
起動するときのオプションで指示する場合、および、上
記の原始プログラムに利用者がインライン展開を指示
する指示行を挿入する場合は、利用者がプログラムの動
作および振る舞いを熟知していて、適切な指示を与えて
いる場合には、充分な効果があるが、そうでない場合は
充分な効果は期待できないという欠点があった。
【0006】また、上記の翻訳前にプログラムを一回
実行することにより得られるプログラムの振る舞い情報
より決定する場合には、翻訳前にプログラムを一回実行
しなければならないという欠点があった。
【0007】また、上記の原始プログラムを静的かつ
詳細に解析し、各文の実行回数を推定し、呼び出し回数
が多いプログラム単位をインライン展開すべきプログラ
ムであると自動的に選択する場合には、翻訳に時間がか
かるという欠点があった。
【0008】そこで本発明の目的は、利用者がプログラ
ムの動作や振る舞いを意識することなく自動的に、しか
も、比較的短時間で、呼び出し回数が多いと考えられる
プログラム単位のインライン展開を行うことができるプ
ログラムの自動インライン展開方式を提供することにあ
る。
【0009】
【課題を解決するための手段】本発明は上記の目的を達
成するために、(A)原始プログラムを入力し、目的プ
ログラムに翻訳するコンパイラにおいて、原始プログラ
ムを解析し、他のプログラム単位を呼び出していないプ
ログラム単位を捜して、そのプログラム単位をインライ
ン展開の対象と決定するインライン展開決定手段と、該
インライン展開決定手段により決定されたプログラム単
位を、呼び出すプログラム単位の中に展開するインライ
ン展開手段とを備えている。
【0010】また、本発明は、コンパイルオプションで
指定したプログラム単位の呼び出しは無視してインライ
ン展開すべきプログラムの決定が行えるようにするため
に、(B)原始プログラムを入力し、目的プログラムに
翻訳するコンパイラにおいて、原始プログラムを解析
し、コンパイルオプションで指定されたプログラム単位
を除くプログラム単位を呼び出していないプログラム単
位を捜して、そのプログラム単位をインライン展開の対
象と決定するインライン展開決定手段と、該インライン
展開決定手段により決定されたプログラム単位を、呼び
出すプログラム単位の中に展開するインライン展開手段
とを備えている。
【0011】
【作用】一般に或るプログラム単位から複数のプログラ
ム単位を順々に呼び出している場合、通常、その最後に
呼び出されるプログラム単位の実行回数が最も多くな
る。例えば、プログラム単位aからプログラム単位bを
DO文等で10回呼び出し、このプログラム単位bから
プログラム単位cをDO文等で10回呼び出していると
すると、最後に呼び出されるプログラム単位cは合計1
00回呼び出されることになる。
【0012】実行回数の多いプログラム単位を調べるに
は前述した従来技術,が正確であるが、それには前
述したように多くの翻訳時間を必要とする。
【0013】そこで本発明では、他のプログラム単位を
呼び出していないプログラム単位は上記にいう最後に呼
び出されるプログラム単位である点に着目し、プログラ
ム単位から他のプログラム単位を呼び出しているか否か
を調べるという簡単な処理でインライン展開すべきプロ
グラム単位を決定するようにしたものである。
【0014】即ち、本発明の(A)のプログラムの自動
インライン展開方式においては、インライン展開決定手
段が原始プログラムを解析し、他のプログラム単位を呼
び出していないプログラム単位を捜して、そのプログラ
ム単位をインライン展開の対象と決定し、インライン展
開手段がインライン展開決定手段により決定されたプロ
グラム単位を、呼び出すプログラム単位の中に展開す
る。
【0015】また、他のプログラム単位を全く呼び出し
ていないプログラム単位のみをインライン展開の対象と
すると、実際上使い勝手が良くないので、利用者がコン
パイルオプションで指定したプログラム単位について
は、それを呼び出していても呼び出していないように扱
うことを可能としている。
【0016】即ち、本発明の(B)のプログラムの自動
インライン展開方式においては、インライン展開決定手
段が原始プログラムを解析し、コンパイルオプションで
指定されたプログラム単位を除くプログラム単位を呼び
出していないプログラム単位を捜して、そのプログラム
単位をインライン展開の対象と決定し、インライン展開
手段がインライン展開決定手段により決定されたプログ
ラム単位を、呼び出すプログラム単位の中に展開する。
【0017】なお、本発明のプログラムの自動インライ
ン展開方式によると、実際には実行回数の少ないプログ
ラム単位も含まれ、その分、目的プログラムのサイズが
増大する面もあるが、翻訳時の処理が格段に簡略化され
るという利点を有するので、充分に実用に供し得るもの
である。
【0018】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
【0019】図1は本発明のプログラムの自動インライ
ン展開方式を適用したコンパイラの一実施例を示す構成
図である。
【0020】図1において、コンパイラ1は、オプショ
ン解析手段11,インライン展開決定手段12,インラ
イン展開手段13,構文解析手段14,意味解析手段1
5およびコード生成手段16とから構成され、オプショ
ン群2と原始プログラム3とを入力してインライン展開
した原始プログラム4を出力し、最終的に実行可能な目
的プログラム5を出力するものである。
【0021】コンパイラ1を起動すると、まず、コンパ
イラ1のオプション解析手段11が、インライン展開の
対象とするプログラム単位の決定において他のプログラ
ム単位を呼び出していないプログラム単位を検出する際
に、他のプログラム単位を呼び出していてもその呼び出
しは無視すべきであるプログラム単位名を指定したオプ
ションを含むオプション群2を入力し、解析する。
【0022】オプション解析手段11の処理が終了する
と、コンパイラ1のインライン展開決定手段12は、原
始プログラム3を解析し、オプション解析手段11で解
析された呼び出しを無視すべきプログラム単位を除くプ
ログラム単位の呼び出しがないプログラム単位、即ち、
他のプログラム単位を全く呼び出していないかあるいは
オプション解析手段11で解析されたプログラム単位名
のプログラム単位以外は呼び出していないプログラム単
位を捜し、そのプログラム単位をインライン展開の対象
と決定する。
【0023】次に、インライン展開手段13はインライ
ン展開決定手段12により決定されたプログラム単位
を、それを呼び出している文の代わりに挿入することに
よりインライン展開を行い、新たな原始プログラム4を
作成する。
【0024】次に、構文解析手段14および意味解析手
段15が、インライン展開された後の原始プログラム4
に対して構文解析および意味解析を行い、コード生成手
段16が、構文解析および意味解析の結果を基に目的プ
ログラム5を作成する。
【0025】図2は、FORTRAN言語で記述された
原始プログラム3の例を示したものである。この原始プ
ログラム3はプログラム(PROGRAM)MAINに
おいて、サブルーチン(SUBROUTINE)Aおよ
びサブルーチンBを呼び出し、呼び出されるサブルーチ
ンAではサブルーチンBおよびサブルーチンCを呼び出
している。また、サブルーチンBでは、他のプログラム
単位の呼び出しは行っておらず、サブルーチンCでは他
のプログラム単位YSINの呼び出しがある。
【0026】次に具体例として、図2に示した原始プロ
グラム3をコンパイラ1がインライン展開を伴って翻訳
する場合を説明する。なお、オプション群2に含まれる
オプションで、関数パッケージ中にある手続きのYSI
Nがあってもインライン展開するとの指示があるとす
る。
【0027】まず、オプション群2を入力したコンパイ
ラ1のオプション解析手段11は、オプション群2を入
力し、関数パッケージ中にある手続きのYSINがあっ
てもインライン展開するとの指示があることを解析す
る。次に、インライン展開決定手段12は、原始プログ
ラム3を入力し、インライン展開するプログラム単位の
決定を行う。本例では、プログラム単位Aはプログラム
単位Bおよびプログラム単位Cの呼び出しがあるので、
インライン展開の対象外と決定し、プログラム単位Bは
他のプログラム単位の呼び出しが全くないのでインライ
ン展開の対象と決定し、また、プログラム単位Cについ
ては他のプログラム単位YSINの呼び出しがあるが、
オプション群2に含まれるオプションでその呼び出しを
無視すべきとの指定があるのでインライン展開の対象と
決定する。
【0028】このように、インライン展開決定手段12
によりインライン展開すべきプログラム単位の決定が行
われると、インライン展開手段13は、インライン展開
の対象と決定されたプログラム単位を、呼び出すプログ
ラムの中に展開して原始プログラム4を生成する。その
結果生成された原始プログラム4は図3に示すものとな
る。
【0029】その後、前述したように、構文解析手段1
4および意味解析手段15が、インライン展開された後
の原始プログラム4に対して構文解析および意味解析を
行い、コード生成手段16が、構文解析および意味解析
の結果を基に目的プログラム5を作成する。
【0030】
【発明の効果】以上説明したように、本発明のプログラ
ムの自動インライン展開方式にあっては、原始プログラ
ムを解析して、そのプログラム単位から他のプログラム
単位を呼び出しているか否かだけを調べることにより、
インライン展開されるプログラム単位を決定して、呼び
出すプログラム単位の中に展開するようにしている。そ
のため、利用者がプログラムの動作や振る舞いを意識す
ることなく自動的に、しかも比較的短時間で、呼び出し
回数が多いと考えられるプログラム単位のインライン展
開が可能になる。
【図面の簡単な説明】
【図1】本発明のプログラムの自動インライン展開方式
を適用したコンパイラの一実施例を示す構成図である。
【図2】FORTRAN言語で記述されたインライン展
開前の原始プログラムの一例を示す図である。
【図3】図2に示す原始プログラムのインライン展開後
の原始プログラムを示す図である。
【符号の説明】
1…コンパイラ 11…オプション解析手段 12…インライン展開決定手段 13…インライン展開手段 14…構文解析手段 15…意味解析手段 16…コード生成手段 2…オプション群 3,4…原始プログラム 5…目的プログラム

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを入力し、目的プログラ
    ムに翻訳するコンパイラにおいて、 原始プログラムを解析し、他のプログラム単位を呼び出
    していないプログラム単位を捜して、そのプログラム単
    位をインライン展開の対象と決定するインライン展開決
    定手段と、 該インライン展開決定手段により決定されたプログラム
    単位を、呼び出すプログラム単位の中に展開するインラ
    イン展開手段とを備えたことを特徴とするプログラムの
    自動インライン展開方式。
  2. 【請求項2】 原始プログラムを入力し、目的プログラ
    ムに翻訳するコンパイラにおいて、 原始プログラムを解析し、コンパイルオプションで指定
    されたプログラム単位を除くプログラム単位を呼び出し
    ていないプログラム単位を捜して、そのプログラム単位
    をインライン展開の対象と決定するインライン展開決定
    手段と、 該インライン展開決定手段により決定されたプログラム
    単位を、呼び出すプログラム単位の中に展開するインラ
    イン展開手段とを備えたことを特徴とするプログラムの
    自動インライン展開方式。
JP3263032A 1991-09-13 1991-09-13 プログラムの自動インライン展開方式 Pending JPH0573335A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3263032A JPH0573335A (ja) 1991-09-13 1991-09-13 プログラムの自動インライン展開方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3263032A JPH0573335A (ja) 1991-09-13 1991-09-13 プログラムの自動インライン展開方式

Publications (1)

Publication Number Publication Date
JPH0573335A true JPH0573335A (ja) 1993-03-26

Family

ID=17383937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3263032A Pending JPH0573335A (ja) 1991-09-13 1991-09-13 プログラムの自動インライン展開方式

Country Status (1)

Country Link
JP (1) JPH0573335A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5645138A (en) * 1995-06-19 1997-07-08 Toyoda Gosei Co., Ltd. Dilatant fluid-sealed vibration-insulating device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5645138A (en) * 1995-06-19 1997-07-08 Toyoda Gosei Co., Ltd. Dilatant fluid-sealed vibration-insulating device

Similar Documents

Publication Publication Date Title
US6954747B1 (en) Methods for comparing versions of a program
US6170083B1 (en) Method for performing dynamic optimization of computer code
US5606697A (en) Compiler system for language processing program
US6973644B2 (en) Program interpreter
JP2001147819A (ja) 最適化装置および記録媒体
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US20030028860A1 (en) Compiler and debugging device
JP2000222220A (ja) 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
JPH0738158B2 (ja) コード最適化方法およびコンパイラ・システム
JP3606654B2 (ja) コンパイラ装置
JPH0573335A (ja) プログラムの自動インライン展開方式
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JPS62204374A (ja) 2倍演算最適化処理方式
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH04165537A (ja) プログラム自動インライン展開方式
JPH08263300A (ja) インライン展開方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPH05120029A (ja) 最適化方法
JPH11161500A (ja) 実行時依存解析を行う目的プログラムの生成方法
JP3018783B2 (ja) コンパイル方式
JPH08115220A (ja) ループ最適化方法
JPH05313910A (ja) 機械語命令生成方式
JP2001325110A (ja) コンパイラ装置及びそのインライン展開方式
JPH06214800A (ja) 目的プログラムの最適化処理システム
JPH04308934A (ja) 電子計算機