JPH01214936A - 最適化コンパイラ - Google Patents

最適化コンパイラ

Info

Publication number
JPH01214936A
JPH01214936A JP3938788A JP3938788A JPH01214936A JP H01214936 A JPH01214936 A JP H01214936A JP 3938788 A JP3938788 A JP 3938788A JP 3938788 A JP3938788 A JP 3938788A JP H01214936 A JPH01214936 A JP H01214936A
Authority
JP
Japan
Prior art keywords
basic block
code
deletion
finding
common
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
JP3938788A
Other languages
English (en)
Inventor
Sumio Kikuchi
菊池 純男
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 JP3938788A priority Critical patent/JPH01214936A/ja
Publication of JPH01214936A publication Critical patent/JPH01214936A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、機械コードの品質を改善するために最適化ア
ルゴリズムを用いたコンパイラに有用であり、特に共通
部分式の削除とコード移動として知られる最適化を行う
ときに削除によって必要となる部分式の定義位置を求め
るための最適な方法を提供する。
【従来の技術〕
最適化コンパイラでコードの品質を改善するための技術
には、共通式の削除、ループ不変式のループ外移動、不
用コードの削除などがある。これら技術についての説明
は(1)A、エイホ、J、ウルマン(A、Aho、 J
、Llll++an)、  rプリンシプルズオブ コ
ンパイラ デザイン」、アデイソンーウエスレー社、1
977年や(2)E、モレル他[グローバル オプテイ
マイゼイション パイ サプレッション オブ パーシ
ャル リダンダンシー」、シーニーシーエム、第22巻
、第2号+PP96〜103.1979など詳しく述べ
られている。
大域的な共通部分式の削除及びコード移動を行う最適化
はこれらのうちでも最も重要な技術である。上記引用文
献の第2番目は、コードを挿入することによって元のコ
ードを冗長なものとし削除する方法について詳しく述べ
ている。このなかでコードを挿入する場所と冗長なコー
ドの存在する場所を求める方法も説明している。
さらに米国特許第640283号において、上記引用文
献2の方法を効率よく行う方法として、計算に関する基
底を判定するという概念を導入した方法が開示されてい
る。
〔発明が解決しようとする課題〕
しかし、上記従来技術はコードを挿入する場所と冗長な
コードが存在する場所を求める方法を開示しているだけ
で、冗長なコードを削除した後にこの最適化をうけたプ
ログラムが正しく動作するために必要な部分式の定義場
所を求める方法について開示していない、大域的な共通
部分式の削除及びコード移動を行うには上記部分式の定
義場所を求めることが不可欠である。
本発明の目的は、大域的な共通部分式の削除及びコード
移動を行うのに不可欠な部分式の定義場所を求める効率
よい方法を提供することにある。
(課題を解決するための手段〕 上記目的は、引用文献2で示されている。
ANTLOC:上方に露出したコード 出現位置で計算してもその基本ブロックの入口で計算し
ても同じ実行結果が得られるコードの集まり。
COMP :下方に露出されたコード 出現位置で計算してもその基本ブロックの出口で計算し
ても同じ実行結果が得られるコードの集まり。
TRANSP :基本ブロックの入口と出口で計算して
も同じ実行結果が得られるコードの集まり。
という基本ブロック毎に作成される基本集合と、lN5
ERT :基本ブロックに挿入すべきコードの集まり。
DELETE :基本ブロックに存在する冗長なコード
の集まり。
とを用いて、さらに上方に露出した冗長なコードの集ま
りを各基本ブロックについて求めることと、この集まり
を上記DE!LETE、 TRANSP、 COMPに
よって部分式の定義位置を求めることにより、達成され
る。
〔実施例〕
以下、本発明の一実施例を図面を参照しつつ説明する。
第1図は大域的な共通式の削除及びコード移動を行う流
れ図である。ブロック1,2,5゜6は周知のステップ
である。ブロック3,4は本発明にかかわるステップで
ある。第2図は最適化コンパイラの高いレベルの流れ図
である。ブロック7.8,9,10.11はいずれも従
来公知のステップである。ブロック9で行われる、さま
ざまな最適化技術の1つとして本発明が適用される。
第1図において、すでに周知であるブロック1゜2.5
.6のうち本発明とかかわりのあるブロック1,2につ
いて本実施例の理解を容易にするために説明する。ブロ
ック5,6はlN5ERT、 C[LETH集合を参照
して、コードの挿入及び冗長コードの削除を行う処理で
あって本発明とは直接関係を持たない。
ブロック1は大域的な共通部分式の削除及びコ願Nα6
40283に述べられている。別の態様によれば、次の
ステップによって実施される。
1、プログラムの中間言語表現(以下、中間コードとよ
ぶ)を調べ、字面上同一な部分式を検出する。これにつ
いては日本特許出願Nα61−021923 r共通式
検出方式」に詳しく説明されている。
2、上記1で検出された部分式に関し、各基本ブロック
を調べて、上記基本ブロック内でその出現場所以前に定
義されていないオペランドからなる部分式を識別する。
 ANTLOCはこのような部分式の槃まりであって各
基本ブロック毎に作成される。COMPは上記基本ブロ
ック内でその出現場所以後に定義されていないオペラン
ドからなる部分式の集まりであり、TRANSPは上記
基本ブロック内で定義されないオペランドからなる部分
式の集まりである。
具体的には、各部分式毎にそのオペランドを1つずつ上
記ANTLOC,GOMP、 TRANSPの条件を満
足するか調べる。すべてのオペランドが満たされたとき
に対応する集まりにその部分式を加える。
例えば、第3図の例では各集合は次のようになる。
・基本ブロックBI ANTLOG(B 1) = (Y +W)COMP(
Bz) = (C傘D) TRANSP(B z) = (φ) ・基本ブロックB2 ANTLOC[Bz) =COMP (Bz) = (
φ)TRANSP(Bz) = (C* D 、 Y 
+W)・基本ブロックBδ ANTLOC(Ba) =COMP[:Ba) = (
Y+W)TRANSP(B a) =(C串り、Y+W
)・基本ブロックB4 ANTLOG(B番)  =COMPCB4)  =T
RANSP[B4]= (C*[)、Y+W) ブロック2はコードの挿入及び冗長なコードを削除する
ためにANTLOC,GOMP、 TRANSPから各
基本ブロックについてlN5ERT、 DELETE集
合を導くことを行う。この方法については従来技術で示
した引用文献2及び米国特許出願N11640283に
詳しい説明がある。これらによれば、次のようにして実
施することができる。
まず、ANTLOC,COMP、 TRANSPから各
基本ブロック毎に次の3種の補助集合を導く。
AVOUT[i] =COMP(i) +TRANSP
(i) ・AVINCi)PAVOUT(i) =CO
MP[i) +TRANSP[i] ・PAVIN[1
)(3) ANTOUT(i) ”rFalse: i
がプログラムの出口基本ブロック ANTIN(i) =ANTLOC(i) +TRAM
SP(i)・ANTOUT (i )これら3種の補助
集合を求めた後、この3種の集合と前述の基本集合とか
ら次の補助集合を導く。
(ANTLDC(i)+’lRAM5P(i) ・PP
0UT(i)):jはiのブリデイセッサブロック 但し、 C0N5T(i)=ANTIN(i)・(PAVIN(
i)+がすべての基本ブロックで変化しなくなるまで反
復して再計算することによって解力1れる。
各基本ブロック毎ノAvour、 PPIN、 ppo
urfJt決定した後、各基本ブロック毎にlN5ER
T、 DELETEを次式で求める。
I?ll5ERT[i] =PPOLIT(i)−1A
VOUT(i) ・(1PPIN(i)+l TRAN
SP [i]) DF!IErE(i ) =AN’nJl)C(i )
 ・PPIN[i )第3図に示す具体例では、lN5
ERT、 DELETEは次のようになる。
・基本ブロックBI INSERT(Bi) =DELETE[Bx)= (
φ)・基本ブロックBz INSERT(Bz) = (Y十W)DELETE[
B z] = (φ) ・基本ブロックBa lN5ERT(Ba) =DELETE(Ba)= (
φ)・基本ブロックB4 INSERTCB番〕=(φ) DELETE(Ba)  = (C嘲り、Y十W)ここ
で求めたlN5ERTとDELETEを用いて第1図の
ブロック5,6を行うと第3図に示された例は第4図の
ように部分式の削除とコード移動が行すれる、すなわち
、基本ブロックB2に式(6)が挿入され、基本ブロッ
クB4のC*D、Y+Wが削除され各々変数Tz、Tz
に置きかえられている。第4図の結果から、このプログ
ラムからは第3図と同じ実行結果が得られないことは式
(4)に対するT1の定義が存在しないこと及び式(5
)に対するTz(7)定aがBz、Ba、Baというパ
ス上に存在しないことから容易に理解できる。
次に1本発明に直接かかわるブロック3,4について説
明する。
ブロック3はブロック1,2で求めたTRANSP。
ANTLOC,DELETE、 lN5ERTから上方
に露出した冗長コードの集まりRDUNIN、 RDU
NO[ITを次式によって求める。ここで、RDUNI
Nは基本ブロックの入口で。
RDUNOUTは出口での情報である。
RDLININ(i) =DEIJETE(i) + 
(TRANSP(i) °1 ANTLDC(i)°1
1faiRT(i ] °RDLINOIJT(i) 
)この方程式は(1)〜(4)の方程式と同様の方法に
よって解くことができる。すなわち、左辺で示される集
合がすべての基本ブロックで変化しなくなるまで反復し
て再計算することによって解かれる。
第3図の具体例では次のような集合が形成される。
・基本ブロックB1 RDUNOUT(B 11 = (C拳D)RDUNI
N(B x) = (φ) ・基本ブロックB2 RDUNOUT(B2) = (C傘り、 Y+W)R
DUNIN(Bz) = (C申D)・基本ブロックB
8 RDLINOUT[B 3]=RDLININ (B 
g) =(C” D p Y+W) ・基本ブロックB4 RDUNOUT(B4) ” (φ) RDUNINCB&) = (C串り、Y+W)ブロッ
ク4はブロック1,2.3で求められたTRANSF’
、COMP、 DELETIli、 RDLINOUT
から各基本ブロック毎に次のDEF集合を求める。この
DEF集合は入城的な共通部分式の削除とコード移動に
ともない必要となる定義場所を与える情報となる。
DE F(i ) =RDUNOUT(i) °(1D
ELETE(i ) +1 TRAMSP(i ) °
COMP各基本ブロック毎にDEF集合が形成されたら
基本ブロック毎にDEF集合に含まれる部分式削除し、
その部分式の直前にコードを挿入する。
第3図の具体例では各基本ブロック毎、に次の集合が形
成される。
・基本ブロックBz DE F(Bx)= (C嘲D) ・基本ブロックB2 DEF(Bz)= (φ) ・基本ブロックBa DEF(Bs)−(Y+W) ・基本ブロック8番 DEF(B番〕=(φ) この結果は第5図のように基本ブロックB1においては
式(2)が削除されて変数T1に置きかわり、直前に式
(2)′ が挿入される・。基本ブロックB3において
は式(3)が削除されて変数Tzに置きかわり、直前に
式(3)′が挿入される、かごとくなる。第5図に示さ
れたプログラムは第3図で示された元のプログラムと同
じ実行結果が得られることは第4図との対比によっても
容易に理解できる。
本実施例によれば共通部分式の削除及びコード移動を、
新たに各基本ブロック毎に作成する1種の集合を従来公
知の方法によって求めることによって完全に、かつ効率
良く行える。
〔発明の効果〕
本発明によれば、最適化コンパイラで行われる主要最適
化である共通部分式の削除及びコード移動を完全に行う
ために、新たに共通部分式の値を求める最適位置を求め
る効率良い方法が提供される。
【図面の簡単な説明】
第1図は本発明の一実施例の処理構成図、第2図は最適
化コンパイラの高いレベルでの流れ図、第3図は本実施
例の説明に用いる元のソースプロダラム図、第4図は従
来公知の共通部分式の削除及びコード移動が行われた後
のプログラム図、第5図は本実施例が適用された後のプ
ログラム図で第1図 冨3図 宴 4 図 洒6図

Claims (1)

    【特許請求の範囲】
  1. 1、基本ブロックが識別された、プログラムの中間言語
    表現に対して、大域的な共通部分式の削除及びコード移
    動を行う最適化コンパイラであつて、各基本ブロックに
    おいて、上記基本ブロック内でその出現位置以前に定義
    されていないオペランドからなる部分式を識別し、かつ
    上記基本ブロック内でその出現位置以後に定義されてい
    ないオペランドからなる部分式を識別し、かつ上記基本
    ブロック内で定義されないオペランドからなる部分式を
    識別した上で、これら部分式の削除及びコード移動場所
    を決定するとともに上記削除により必要となる部分式の
    定義場所を決定することを特徴とする最適化コンパイラ
JP3938788A 1988-02-24 1988-02-24 最適化コンパイラ Pending JPH01214936A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3938788A JPH01214936A (ja) 1988-02-24 1988-02-24 最適化コンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3938788A JPH01214936A (ja) 1988-02-24 1988-02-24 最適化コンパイラ

Publications (1)

Publication Number Publication Date
JPH01214936A true JPH01214936A (ja) 1989-08-29

Family

ID=12551594

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3938788A Pending JPH01214936A (ja) 1988-02-24 1988-02-24 最適化コンパイラ

Country Status (1)

Country Link
JP (1) JPH01214936A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04215133A (ja) * 1990-02-14 1992-08-05 Internatl Business Mach Corp <Ibm> コード最適化方法およびコンパイラ・システム
US5862384A (en) * 1996-01-17 1999-01-19 Nec Corporation Compiler optimizer that moves loop invariant expressions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04215133A (ja) * 1990-02-14 1992-08-05 Internatl Business Mach Corp <Ibm> コード最適化方法およびコンパイラ・システム
US5862384A (en) * 1996-01-17 1999-01-19 Nec Corporation Compiler optimizer that moves loop invariant expressions

Similar Documents

Publication Publication Date Title
EP0273130B1 (en) Reassociation process for code optimization
US5768596A (en) System and method to efficiently represent aliases and indirect memory operations in static single assignment form during compilation
US5202995A (en) Method for removing invariant branches from instruction loops of a computer program
US6966055B2 (en) Optimizing post-link code
JPH0336632A (ja) コンパイル時における最適化方法
JPH0695311B2 (ja) コード最適化方法
US7950005B2 (en) Method and apparatus for performing versioning for loop, method and apparatus for collecting array range check information in basic blocks, method for modifying array range check information, method for optimizing array range checks, method for generating codes for array range checks, method and apparatus for eliminating redundant array range checks, method for selecting array range checks, method for modifying array range checks, method for collecting array range checks, and method for determining handling of array range checks
US5790859A (en) Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler
US6041181A (en) Method of, system for, and computer program product for providing quick fusion in WHERE constructs
CA2321016A1 (en) Interprocedural dead store elimination
US5845126A (en) Method of, system for, and computer program product for providing inlined nested array constructors using normalized counters
Lomet Data flow analysis in the presence of procedure calls
US6665864B1 (en) Method and apparatus for generating code for array range check and method and apparatus for versioning
US6077314A (en) Method of, system for, and computer program product for providing improved code motion and code redundancy removal using extended global value numbering
EP1164477A2 (en) A loop optimization method and a compiler
JPH01214936A (ja) 最適化コンパイラ
US6035124A (en) Method of, system for, and computer program product for providing extended global value numbering
US5937196A (en) Compiling with partial copy propagation
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JP3313859B2 (ja) 冗長式除去装置
JPH11149380A (ja) コンパイラとプログラム最適化方法およびその処理プログラムを記録した記録媒体
JPH03127127A (ja) コンピュータプログラムの最適化方法
JPH0522272B2 (ja)
JP2002082811A (ja) コンパイル方法および記録媒体
JPS63155264A (ja) ベクトル計算機用言語チユ−ニング処理方式