JPS62202235A - コンパイラにおけるル−プ展開方式 - Google Patents

コンパイラにおけるル−プ展開方式

Info

Publication number
JPS62202235A
JPS62202235A JP61043958A JP4395886A JPS62202235A JP S62202235 A JPS62202235 A JP S62202235A JP 61043958 A JP61043958 A JP 61043958A JP 4395886 A JP4395886 A JP 4395886A JP S62202235 A JPS62202235 A JP S62202235A
Authority
JP
Japan
Prior art keywords
induction
loop
conditional
condition
conditional expression
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.)
Granted
Application number
JP61043958A
Other languages
English (en)
Other versions
JP2708405B2 (ja
Inventor
Shizuo Goto
志津雄 後藤
Yasushi Kaneda
泰 金田
Kyoko Iwazawa
岩沢 京子
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 JP61043958A priority Critical patent/JP2708405B2/ja
Priority to GB08702665A priority patent/GB2188760A/en
Priority to US07/012,991 priority patent/US4807126A/en
Publication of JPS62202235A publication Critical patent/JPS62202235A/ja
Application granted granted Critical
Publication of JP2708405B2 publication Critical patent/JP2708405B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はソースプログラムを解析して実行効率のよい目
的プログラムを生成するコンパイルにおけるループ展開
方式に係り、特にループ内にインダクション条件を有す
るソースプログラムに対し実行効率のよい目的プログラ
ムを生成するに好適なコンパイラにおけるループ展開方
式に関する。
〔従来の技術〕
目的プログラムの実行に要する時間の多くはループ構造
部分で費される。ループ構造部分の中に条件文があると
目的プログラムの実行効率が悪くなること、またベクト
ル処理装置などの並列計算機においても条件文を含むル
ープは適用対象外になったり適用対象となったとしても
実行効率が悪くなることが知られている。このため1条
件文のあるループを条件文のないループ構造に変更する
方式が考案された。文献「スーパーコンピュータHIT
ACS −810FORTRAN  コンパイラ”V(
IS3FORT77/HAPJ日立評論 第65巻8号
(1−983)の第551頁から555頁に記されてい
るのは、ループ内にある条件文のうちループ不変条件文
(ループの繰り返しに依らず結果が定まっている条件文
)、およびループ開始点条件文(ループの繰り返しの中
で、初回とそれ以外で判定が反転する条件文)の2つに
ついて、当該条件文をループ内から消滅させるループ展
開方法である。
このうちループ開始点条件文の場合のループ展開方法を
第2図を用いて説明する。第2図(A)において、■の
条件文は、ループの開始点でのみTRUF、となり、そ
の他の繰り返しにおいてはFALSEとなる。そこで、
ループ繰り返しのうち初回に実行される部分(■、■、
■)をループの外に出し、ループの繰り返しを第2図か
ら開始するようにすれば、ループ内の条件文は常にFA
LSEとなることになるので、条件文を解消することが
できる。ループ構造の変換結果は(R)のようになる。
このような条件文の解消を目的とするループの構造変換
方式としては、上記文献にある2種類の条件文(ループ
開始点条件文とループ不変条件文)が知られているのみ
であり、これ以外の種類の条件文について論じられてい
るものは見当らない。
〔発明が解決しようとする問題点〕
上記の様に従来技術では、ループ部分の条件文のうちそ
れが解消できるような条件文は限られたものであった。
本発明の目的は、解消可能な条件文の対象を拡大するこ
とにある。具体的には、次の2つの条件文の解消のため
の展開方法を提供することである。
(1)ループ最終回か否かを判定する条件文(2)ルー
プ繰り返しの途中の特定口について判定する条件文 本発明の他の目的は、上記従来技術が述べたループ開始
点条件文と上記の2つの条件文について条件文のM、消
を統一的に実施する方法を提供することである。ループ
開始点条件文と上記の2つの条件文を併せて統一的にイ
ンダクション条件文と呼ぶことにする。
〔問題点を解決するための手段〕
上記目的は、コンパイラにおいて、インダクション条件
展開部を設けることにより達成される。
該インダクション条件展開部はインダクション条件検出
部、インダクション条件特性解析部、インダクション条
件展開対象決定部、およびループ構造変換部を構成要素
としている。
(1)インダクション条件検出部は、該ループを構成す
る文と式を調査し、インダクション条件式を検出する。
(2)インダクション条件特性解析部は、(1)で検出
したインダクション条件式を解析し、それが開始点イン
ダクション条件式が、最終点インダクション条件式か、
中間点インダクション条件式かどうかを判定する。
(3)インダクション条件展開対象決定部は、どのイン
ダクション条件を展開すべきかをその特性によって選択
する。
(4)ループ構造変換部は、上記選択されたインダクシ
ョン条件を解消するようにループ構造を変換する。
以上のようにして、インダクション条件式を含むループ
構造を、インダクション条件式を含まないループ構造に
変換することができる。
〔作用〕
インダクション条件展開部の構成要素は、ソース・プロ
グラム内の各ループ構成部分に対して、以下のように作
動する。
(1)インダクション条件検出部は、該ループを構成す
る文と式を調査し、インダクション条件式を検出する。
すなわち、文を順次調べ、条件文を見つける。条件文で
あれば、その条件式を調べ、それがインダクション条件
式か否かを判定する。ここにインダクション条件式とは
、条件式を構成する変数のすべてがループ不変変数また
はインダクション変数であり、かつ該条件式がインダク
ション変数の1次関数になっているものを言う。ここに
ループ不変変数とは、該ループにおいて値の変化がない
変数、インダクション変数とは、該ループの繰り返し回
数の1次関数になっている変数を言う。すなわち、ルー
プ繰り返し回数をn、インダクション変数を工。
インダクション条件式をf (I)とすると、I = 
Cを吻n+C2・・・(1) f (1) ECs* T +C’、4. rop、 
CR−(2)ここに、Cs、 C2,Cst C4,l
 CBは定数またはループ不変変数、またはそれらを構
成要素とする式、ropは比較演算子である。
上記検出されたインダクション条件式はインダクション
条件式テーブルに登録される。
(2)インダクション条件特性解析部は、上記インダク
ション条件式テーブルに登録された各インダクション条
件式に対する解析を行い、その種別を判定する。すなわ
ち、インダクション条件式の判定値がループ繰り返しの
どの時点(開始点、最終点、中間点のいずれか)で反転
するか。
及び反転の起きる時点の付近での該条件式の判定値の反
転パターンを調べる。次のようにして行われる。
(a)反転時点の判定 インダクション条件式f (I)は、ループ繰り返し回
数nの−・次間数になっている。
f(丁)” g (n)l:Ce+I n +C7+r
op、Cs・・・(3) ここに、Go、C7,Csは定数またはループ不変変数
、またはそれらを構成要素とする式である。
判定のため、上式の比較演算子をEQ(等号)と見なし
、方程式を解く。
Cst n−4−C7=C,s          −
(4)から、n = (Cg −(ニア) / CB 
   −(5)となる。
ループ繰り返し回数nは1からループ回数μまでの値を
とる。(5)式の解りの値および比較演算子の種類、お
よび(5)式の06の値の正負によって、当該条件式の
特性を判断するととができる。比較演算子がGT(左辺
が右辺より大きいか)でかつCaの値が正の場合を例に
して判定のしかたを説明する。
(イ)n=1のとき ループ繰り返しの第1回において(3)式はfalse
となり、2回目以降においてはtrueになるので当該
条件式は開始点インダクション条件である。
(ロ)n=麻のとき ループ繰り返しのすべての回において (3)式はfal、seとなることを意味するので、恒
にfalseな条件、すなわち恒偽条件である。
(ハ) 1. < n < Qのとき ループ繰り返しの第n回までfalseであり、第n+
1回以降trueとなるので、中間点インダクション条
件である。
(ニ)nく1のとき ループ繰り返しのすべての回において (3)式はtrueとなることを意味するので、恒にt
rueである条件、すなわち恒真条件である。
(ホ) n ) Qのとき ループ繰り返しのすべての回において (3)式はfal、seとなるので、恒にfal、se
である条件、すなわち恒偽条件である。
他の比較演算子やCBの値が負の場合についても、上記
と同様な判定を行うことによってインダクション条件の
種別を判定することができる。
(b)反1@パターンの調査 比較演算子がEQ(等しいか) 、 NE (等しくな
いか)の場合には、上記のGTの場合と反転パターンが
異なることがある。すなわち、上記(3)式の解nが、
1 < n < Qの場合だけ反転パターンが異なり、
たとえば比較演算子がEQの時にはループ繰り返しの第
1回から第n−1回まではfalssであり、第n回の
時のみtrue、第n+1から第0回(最終回)までは
falseとなる。NEの場合には、EQの時のよ(J
O) うに、true−+fa]、5e−)tru+qとなる
。以上のようにEQ、NEの時には条件式の判定結果が
2回反転する。
インダクション条件特性解析部は、上記の特性解析を行
い、インダクション条件テーブルに記録する。
(3)インダクション条件展開対象決定部は、複数のイ
ンダクション条件式の中で展開すべきもの、および展開
する順序を、(2)で設定された特性に基づいて決定す
る。すなわち、(1)で検出されたインダクション条件
の数が多い場合、そのすべてに対してインダクション条
件解消のためのループ展開を実施するのは、その結果と
して生成される目的プログラムの大きさがぼう大となる
ため得策ではない。そこで、展開すべきインダクション
条件式を選択する必要がある。
また、後述のループ構造変換の処理を効率よく行うため
に、インダクション条件式の順序付けを行う。すなわち
、上記(3)式の解nの値により、次のように順序付け
する。
(a)n≦]のものを先頭順位とする。
(b)n≧Qのものを次の順位とする。
(a ) i < n < nのものについては、nの
値の小さい順に順位付けする。
以上の順位付けを行うため、インダクション条件式テー
ブルにソート値フィールドを設け、n≦1のものについ
てはソート値=−2、n≧QのものについてはソーI−
値=−1,1〈nくαのものについてはソート値=nと
する。ソート値に従って昇順のソート処理を行えば、上
記の順序付けができる。
】、つのインダクション条件式の展開は、該ループの構
成部分を最大2倍にまで拡大することがある。同じソー
ト値のものは、同時に展開される(後述)ので、同じソ
ート値のものは1つにまとめて考える。ソート値の小さ
い順に、該ループの拡大が許される範囲内で、展開対象
インダクション条件式を選択していく。
(4)ループ構造変換部は、(3)で選択したインダク
ション条件式のそれぞれについて、ただし、同じソート
値を持つものについては同時に、元のループ構造と等価
でかつ該条件式がループ内から解消されたループ構造を
作り出す。
(a)恒真条件に対しては、該条件式とELSE部分を
消去する。
(b)恒偽条件に対しては、該条件式とTIIF、N部
分を消去する。
(c)開始点条件に対しては、ループ部の直前に、ルー
プ開始点で実行される部分を作成し、かつ、ループ部の
中の該インダクション条件式およびT HIE N部(
ループ開始点以外では条件判定がfalseになる場合
である。trlleになる場合はFl、SE部)を消去
する。また、ループ制御変位の初期値に増分値を加算す
る。
(d)最終点条件に対しては、ループ部の直線に、ルー
プ最終点で実行される部分を伶成し、かつ、ループ部の
中の該インダクション条件式およびTHEN部(または
l’ELsE部)を消去する。
また、ループ制御変数の最終値から増分値を減算する。
(e)中間点条件に対しては、2種類の展開形がある。
比較演算子がEQ、NE以外の時には。
次のように2つのループ構造を作成する。
(1)ループ繰り返しの第1回から第n−11回までの
部分。該インダクション条件式およびT)IEN部(ま
たはELSE部)を消去する。
(33)ループ繰り返しの第0回から最終回までの部分
。該インダクション条件式およびEl、SE部(または
THEN部; (j)の逆の部分)を消去する。
比較演算子がEQかNEの場合には、次のように3つの
部分に展開される。
(j)第]−回からn −1回までのループ部分の該イ
ンダクション条件式およびTHEN部(EQの時、NE
の時はF、LSE部)を消去する。
(ji)第0回に実行される部分。
(fit )第n+11回から最終回までのループ部分
該インダクション条件式およびTIIEN部(EQの時
、NEの時はELSB部)を消去する。
以上のようにして、ループ部分の中のインダクション条
件を検出し、それを解消するようなループ構造に変換す
ることができる。
〔実施例〕
以下、本発明の一実施例を、第1図から第5図を用いて
説明する。
第3図に、本発明が適用されたコンパイラの構成を示す
。コンパイラ1−は次のように動作する。
ソース・プログラム解析部4は、大容量記憶装置2内の
ソース・プログラムを読み込み、それを中間語表現(図
示せず)に変換する。
中間語最適化部5は、中間語表現の構造やデータ参照関
係の解析を行い、実行効率のよい構造に変換する。この
詳細は後述する。
ストレージ割付は部6は[1的プログラムの実行に必要
な領域の割付けを行い、レジスタ割付は部7は汎用レジ
スタと浮動小数点レジスタの割当てを行う。目的プログ
ラム出力部8は機械命令語の列からなる目的プログラム
を大容量記憶装置3へ(J5) 出力する。
中間語最適化部5の構成と動作を次に説明する。
制御フロー解析部10は、中間語表現に対してその中の
制御の流れを解析し、条件構造やループ構造を見つける
データフロー解析部20は、変数の定義参照関係を解析
する。すなわち、ある変数に対して設定された値(定義
)が、他の場所でのその変数の引用(参照)まで引き継
がれるものか否かを、上記制御フロー解析結果を利用し
て解析する。
ループ解析部30は、制御フロー解析部10で見つけた
ループ構造の各々について、データフロー解析部20の
結果を用いて解析を行う。そして各ループについて、次
の2′m類の変数の一覧表を作り出す。
(1)ループ不変変数 ループの繰り返し数に依らず値が一定な変数。
(2)インダクション変数 ループの繰り返し数に依存して値が規則的に変化する変
数。すなわち、各繰り返しにおける(]6) 値は、(その変数の初期値)+(増分値)×(繰り返し
数)により与えられるような変数。
ただし、増分値は、定数またはループ不変変数でなけれ
ばならない。
インダクション条件展開部40が、本発明の適用される
部分であり、ループ解析部3oの解析結果を用いて、イ
ンダクション条件の検出とその解消のためのループ展開
を行う。その詳細は後述する。
冗長性削除部50は、その他の最適化を実施する部分で
ある。
以上のコンパイラの構成と動作はインダクション条件展
開部4oを除いて公知のものであり、詳細な説明は省略
する。
次に、本発明が適用されるインダクション条件展開部4
0の動作を第1図と第5図を用いて説明する。
第1図において、インダクション条件検出部41は、中
間語ループ構造100と、第3図のル・−プ解析部30
の作成した該ループの特性テープル200とを入力し、
インダクション条件式テーブル・リスト300を作成す
る。ここに、該ループの特性テーブル200の構成は、
第5図しこ示すように次の3つからなる。
(1)ループ繰り返し数210 (2)インダクション変数テーブル・リスト220先頭
インダクション変数テーブル・アドレス220−0、お
よび、それを基点にインダクション変数テーブル2.2
0− i  (i、 : i 、 2 、・・・)が接
続されているリスト。
インダクション変数テーブル220−3は、次の各フィ
ールドからなっている。
(a)次インダクション変数テーブル・アドレス22 
 ’l −5 次のインダクション変数テーブル220−i+1を指す
。最終の場合φとなる。
(b)当該変数の先頭インダクション式テーブル・アド
レス222− i 当該インダクシ肩ン変数に関するインダクション式テー
ブルの先頭のアドレスを指す。
このフィールドはループ解析部3oにより設定される。
このフィールドにより指示されるインダクション式テー
ブル240−jj(j=1.2.・・・)は次のフィー
ルドからなる。
(i)次インダクション式テーブル・アドレス241−
 j、 j 次のインダクション式テーブル241−i j + 1
を指す。
(jj)中間語アドレス242−ij 該インダクシ1ン式が表われている中間語を指す。
(c)当該変数の先頭インダクシ3ン条件式テーブル・
アドレス223−i 当該インダクション変数に関するインダクション条件式
テーブルの先頭のアドレスを指す。このフィールドは該
インダクション条件検出部41により設定される。
(d)初期値224−j 当該インダクション変数が当該ループに入る時点での値
(e)増分値225−3 当該インダクション変数が当該ループの1回の繰り返し
で増加する。負数でもよい。
(3)ループ不変変数テーブル・リスト先頭ループ不変
変数テーブル・アドレス230および、それを基点とし
て接続されるループ不変変数テーブル(図示せず)のリ
スト。
また、インダクション条件式テーブル・リスト300の
構成は、第5図に示すように次の2つからなる。第5図
は、第4図のソース・プログラムを例として示したもの
である。
(1)インダクション条件式テーブル310−4j(j
=1.2.・・・jj−1−22,・・・)インダクシ
ョン条件式対応に作られるテーブルであり、インダクシ
ョン変数テーブル22゜−jごとに作られる。
インダクション条件式テーブル310−ijは次の各フ
ィールドからなっている。
(a)次条件式テーブル・アドレス311− i j次
のインダクション条件式テーブル310−kfiを指す
。なければφ。
(b)ソート済み次条件式テーブル・アドレス312−
;j ソートされた後設定される。ソート類で次のインダクシ
ョン条件式テーブル31〇−mnを指す。最終の場合φ
となる。
(Q)中間語へのポインタ313−ij当該インダクシ
ョン条件式の中間語表現格納場所を指す。
(d)ソート値31.4− i、 j ソー1へするキーとなる値。詳細は後述する。
(e)条件文種別315−jj 当該条件式の種別を表わす。詳細は後述する。
(2)ソート済み先頭条件式テーブル・アドレスインダ
クション条件式テーブル内のソート値に従ってソートし
た時の先頭インダクション条件式テーブルのアドレスを
格納する。(ソートについては後述する。) (2J) 該インダクション条件検出部41は、中間語ループ構造
100を解析し、その中に含まれるインダクション条件
式を検出し、検出された各インダクション条件式に対応
して、インダクション条件式テーブル310− i j
を作成する。たとえば、第4図(A)に示すループ構造
の場合、■、■。
■の3つがインダクション条件式として検出される。
該インダクション条件検出部の処理フローを第9図に示
す。次のように動作する。
(1)ステップ601 該ループの先頭インダクション変数テーブル・アドレス
220−oの内容(インダクション変数テーブル・アド
レス)を得る。
(2)ステップ602 インダクション変数テーブル・アドレスがφであれば、
処理を終了する。
(3)ステップ603 インダクション変数テーブル・アドレスの指すインダク
ション変数テーブル221−iの中の先頭インダクショ
ン式テーブル・アドレス222− jを得る。
(4)ステップ604,608 それがφであれば、次のインダクション変数について調
べるため、該インダクション変数テーブル内の次インダ
クション変数テーブル・アドレス221− iを得て、
処理(2)ステップ602に制御を移す。
(5)ステップ605 インダクション式テーブル240−;jの中間語アドレ
ス・フィールドから中間語を得、それが条件文の中の式
(条件式)が否かを調べる。
(6)ステップ606 条件式であればインダクション条件式テーブル310−
ijを作成し、インダクション条件式テーブル・リスト
300に登録し、処理(8)へ行く。
(7)ステップ607 条件式でなければ、何もしないで次に行く。
(8)ステップ608 該インダクション式テーブルの中の次インダクション式
テーブル・アドレス241− i、 jを得て、処理(
4)へ行く。
次に、インダクション条件特性解析部42は、上記検出
された各インダクション条件式に対し、その特性を解析
し、インダクシ玉ン条件式テーブル310− :i、 
j内に特性値を設定する。すなわち、次の2つの情報が
設定される。
(j−)ソート値3]4−.ij  (第6図参照)イ
ンダクション条件式テーブルをソー1〜するための値で
あり、次のように算出される。
(a)開始点条件式の時−2゜ (b)最終点条件式の時−1′。
(c )中間点条件式の時、当該インダクション条件式
の判定結果が初めて反転するくり返し数。
開始点、最終点の時にそれぞれ−2,−1とする理由は
、後述するループ構造変換部44において、開始点、最
終点を先に展開するようにその順にソー1−するためで
ある。
(2)条件式種別31.5−i、j(第7図参照)当該
インダクション条件式の種別を表わすものであり、以下
のものがある。
(a)恒真インダクション条件 インダクション変数の値のとりうる範囲内で、常に条件
が成立する条件式がある。例えば、IF (1,GE、
1)という条件式は、インダクション変数工の初期値が
1−9増分値が正の時常に成立する。
(b)恒偽インダクション条件 インダクション変数の値のとりうる範囲内で、常に条件
が不成立となる条件式である。
例えばIF (1,LT、1)という条件式は、インダ
クション変数■の初期値が〕−7増分値が正の時常に不
成立となる。
(a )TtllEN反転するインダクション条件該イ
ンダクション条件式の判定結果が、FAl、、SFから
TRUI’(になる条件式である。例えば、I F (
丁、 GE、 1.0)という条件式は、繰り返し回数
= 10の時点でFAI、SFからT It U Rに
なる。
(d)RLSR反転するインダクション条件式該インダ
クション条件式の判定結果が、TRUEからFALSR
になる条件式である。
(A)EQ/NE展開が必要となる条件該インダクショ
ン条件式の判定結果が、ある繰り返し数の時にFALS
HからTRUE (またはTRUEからFALSF! 
)になり、その繰り返し数の次の繰り返しでTRUEか
らFALSE (またはFALSEからTRUE)にな
る条件式である。例えば、IF (1,EQ、1.0)
という条件式がそれに該当する。
次に、インダクション条件展開対象決定部43の動作を
説明する。該インダクション条件展開対象決定部43は
、上記のように特性値の設定されたインダクション条件
式テーブル・リスI−300を入力し、各インダクショ
ン条件式テーブル内のソー1−僅の昇順にソー1−L、
ソートされたインダクション条件式テーブル・リスト4
00を作成する。ソートされたインダクション条件式テ
ーブルの先頭は、ソート済み先頭条件式テーブル・アト
レス320に設定される。
第10図を用いてその処理の流れを説明する。
(1)ステップ621 該ループの先頭インダクション変数テーブル・アドレス
220−oを得る。
(2)ステップ622 インダクション変数テーブルがあるか調べる。
なければ、処理(7)へ行く。
(3)ステップ623 インダクション変数テーブルがあれば、その先頭インダ
クシゴン条件式テーブル・アドレス223−jを得る。
(4)ステップ624,62フ インダクション条件式テーブルがあるか調べる。なけれ
ば、次のインダクション変数について調べるため、次イ
ンダクション変数テーブル・アドレス221− iを得
て、処理(2)へ行く。
(5)ステップ625 インダクション条件式テーブルがあれば、それを、ソー
ト済みインダクション条件式テーブル・アドレス320
を基点とするソート・チェインに登録する。ソートに用
いる値は、インダクション条件特性解析部42で設定し
たソート値3 ] 4− jjであり、その値の昇順に
ソートする。
(6)ステップ626 ソート後、次のインダクション条件式テーブル・アドレ
ス3 ]1−′i、 、jを得、処理(4)へ行く。
(7)ステップ628 ソートされたインダクション条件式テーブル・リストの
うち、どれを展開対象とするかを決定し、条件式種別の
中の展開対象条件フラグをオンにする(第7図参照)。
(a)開始点、最終点の条件式は、必ず展開する。
(b)中間点の条件式のうち、同じソート値を持つもの
が複数のものから選択していく。そして選択した数が、
重複ソー1−値をもつものは1つと数えた上で、ある一
定値゛を超えた時、対象の選択をやめる。ここで、一定
値とは本インダクション条件展開によって目的プログラ
ムの大きさが増加する際の許容される大きさに従って決
定されるものである。通常2〜4位の値を選択するのが
よい。
最後に、ループ構造変換部44の動作を説明する。該ル
ープ構造変換部44は、上述のソートされたインダクシ
ョン条件式テーブル・リスト400を入力し、展開され
た中間語ループ構造500を出力する。第4図のループ
構造を例にして動作を説明する。前述したように、本ル
ープには次の3種のインダクション条件式■、■、■が
存在する。
■開始点インダクション条件式 ■最終点インダクション条件式 ■中間点インダクション条件式 これらのインダクション条件式に対応するインダクショ
ン条件式テーブルは、■、■、■の順にソートされて並
んでおり、この順に展開される。
(])開始点インダクション条件式のループ展開当該開
始点インダクシゴン条件式のは、開始点のみTRLII
Eであり、その後の繰り返しにおいてはFALSr(と
なる。そこで、開始点において実行される処理を表現す
る中間語■を、該ループの前に作成するとともに、該ル
ープの制御変数の開始値を+1し、■のように1から2
に変える。
そして、該ループの本体部から、インダクション条件弐
のを削除する。
(2)最終点インダクション条件式■のループ展開当該
最終点インダクション条件式■は、最終点に致るまでは
TRUEであり、最終点のみTRUEとなる。そこで、
最終点において実行される処理を表現する中間語■を、
該ループの後に作成するとともに、該ループの制御変数
の最終値を−1し、■のように、NからN−1に変える
そして該ループの本体部から、インダクション条件式■
と、最終点でしか実行されない部分〈s4〉  を削除
する。
(1)、(2)の動作の後のループの構造は第4図(B
)のようになる。
(3)中間点インダクション条件弐〇のループ展開当該
インダクション条件弐〇は、繰り返し数が19まではT
RUE、20以降はFALSIEとなる条件式である。
そこで、2つのループに分割される。すなわち、繰り返
し数19までは、条件式■のTILEN部〈S2〉  
を含むループ■となり、繰り返し数20以降は、条件式
■のFLSIE部(この例では空)を含むループ■とな
る。なお、本例ではループの繰り返し最終値N−1は変
数で表現されているので、中間点(19)が最終値(N
−1)より後になることもありうる。そのため[相]を
挿入し、最終値の値の如何に依らず正しい動作をするよ
うに保証している。
以上のようにして、第4図(A、)のループ構造は、(
C)のようにループ展開される。この結果、ループ内か
らインダクション条件文の解消が実施される。
なお、中間点インダクション条件式がEQ/NE展開条
件(第7図参照)の場合には、第8図に示すような展開
が実施される。すなわち、第8図(A)において条件式
〇がEQ/NE展開条件を持つ条件式である。その場合
には、中間点(]0)より前の部分を表わすループ(Q
)、中間点(」O)の実施内容を表わす部分(◎)、中
間点より後の処理を表わすループ(0)の3つの部分に
展開される。
以」二、本発明の一実施例を説明した。本実施例によれ
ば、インダクション条件文として、開始点。
最終点、中間点の3種を統一的にインダクション条件式
テーブル・リストに登録し、それらのインダクション条
件式の中から展開対象を重要なものから順に選択するこ
とができ、重要なインダクシ ゛ヨン条件式から順に条
件式解消をすることができる。この結果、効率のよい目
的プログラムの生成が可能となる。
なお、本実施例においては、目的プログラムの生成を行
うコンパイラについて説明したが、プリコンパイラや、
インタプリタに本発明を適用することも容易に類推して
実施できることを付記する。
〔発明の効果〕
本発明によれば、ループ内に含まれるインプラジョン条
件式を検出し、その特性に従ってループ展開を実施する
ことにより、ループ内からインダクション条件式を解消
することができるので、目的プログラムの実行効率を向
上することができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例のインダクション条件展開部
の構成図、第2図は従来技術でのインダクション条件展
開の説明図、第3図は本発明の適用されるコンパイラの
全体構成部、第4図は本発明が適用された時のインダク
ション条件展開の動作内容の説明図、第5図は第1図の
動作に必要なデータ構造を表わす図、第6図と第7図は
第5図内のインダクション条件テーブル内の特性値を説
明する図、第8図は比較演算子がEQ/NEの時のルー
プ構造変換を説明する図、第9図はインダクション条件
検出部4]−の処理フロー、第10図はインダクション
条件展開対象決定部の処理フローである。 ]−・・・コンパイラ全体、2・・・大容量記憶装置内
のソ−ス・プログラム、3・・・大容量記憶装置内の目
的プロゲラ11.4・・・ソース・プロゲラ11解析部
、5・・・中間語最適化部、6・・・ス1−レージ割付
は部、7・・・レジスタ割付は部、8・・・目的プログ
ラム出力部、40・・・インダクション条件展開部、4
1・・・インダクション条件検出部、42・・・インダ
クシ1ン条件特性解析部、43・・・インダクション条
件展開対象決定部、44・・・ループ構造変換部、22
0・・・インダクシコン変数テーブル、240・・・イ
ンダクション式テーブル、310・・・インダクション
条件式テ冨 2 図 (A)                 (幻第4図 (勾        (C) ス 5 図 第2 図 第 7 区 妃 3 図 (A)                     (
13ジ嘉 lρ U 吏 q 図

Claims (1)

    【特許請求の範囲】
  1. 1、ソース・プログラムを解析し、目的プログラムを生
    成する際、ループ部分の検出、当該ループの繰り返し回
    数に応じて値の定まるインダクション変数の検出並びに
    繰り返しに依らず値の一定なループ不変変数の検出を行
    うことができるコンパイラにおいて、上記インダクショ
    ン変数と上記ループ不変変数または定数を構成要素とす
    るインダクション条件式を検出するインダクション条件
    検出部、当該インダクション条件式の値が初めて反転す
    るようなループ繰り返し数(反転回数)とその反転パタ
    ーンおよび反転位置種別を解析するインダクション条件
    特性解析部、上記インダクション条件特性に基づいて展
    開対象インダクション条件式およびそれらの展開順序を
    決定するインダクション条件展開対象決定部、および上
    記の展開対象のインダクション条件式について、当該イ
    ンダクション条件特性に対応したループ構造変換を実施
    するループ構造変換部を構成要素とするインダクション
    条件展開部を有し、該ループ内のインダクション条件式
    を解消することを特徴とするコンパイラにおけるループ
    展開方式。
JP61043958A 1986-03-03 1986-03-03 コンパイラにおけるループ展開方法 Expired - Fee Related JP2708405B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP61043958A JP2708405B2 (ja) 1986-03-03 1986-03-03 コンパイラにおけるループ展開方法
GB08702665A GB2188760A (en) 1986-03-03 1987-02-06 Converting a source program into an object program
US07/012,991 US4807126A (en) 1986-03-03 1987-02-10 Method for converting a source program having a loop including a control statement into an object program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61043958A JP2708405B2 (ja) 1986-03-03 1986-03-03 コンパイラにおけるループ展開方法

Publications (2)

Publication Number Publication Date
JPS62202235A true JPS62202235A (ja) 1987-09-05
JP2708405B2 JP2708405B2 (ja) 1998-02-04

Family

ID=12678213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61043958A Expired - Fee Related JP2708405B2 (ja) 1986-03-03 1986-03-03 コンパイラにおけるループ展開方法

Country Status (3)

Country Link
US (1) US4807126A (ja)
JP (1) JP2708405B2 (ja)
GB (1) GB2188760A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127127A (ja) * 1989-10-12 1991-05-30 Internatl Business Mach Corp <Ibm> コンピュータプログラムの最適化方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4504689A (en) * 1988-10-12 1990-05-01 Expressway, Inc. Software manufacturing system
WO1990004827A1 (en) * 1988-10-21 1990-05-03 A.C. Nielsen Company Space management system incorporating software operating environment
JPH03111971A (ja) * 1989-09-27 1991-05-13 Toshiba Corp ベクトル化診断方式
JPH03150636A (ja) * 1989-11-08 1991-06-27 Matsushita Electric Ind Co Ltd コンパイル方法
JPH04211830A (ja) * 1990-02-05 1992-08-03 Matsushita Electric Ind Co Ltd 並列化コンパイル方式
JPH0475139A (ja) * 1990-07-18 1992-03-10 Toshiba Corp ループ並列化装置
IL100989A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Analysis of inductive expressions in multilingual mehadoptimization
US5361354A (en) * 1991-12-17 1994-11-01 Cray Research, Inc. Optimization of alternate loop exits
JPH05189472A (ja) * 1992-01-16 1993-07-30 Nec Corp コンパイラのベクトル化処理方式
US5522074A (en) * 1992-12-14 1996-05-28 Nec Corporation Vectorization system for vectorizing loop containing condition induction variables
JP2987311B2 (ja) * 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置
US6074433A (en) * 1995-08-25 2000-06-13 Fujitsu Limited Optimization control apparatus and optimization control method for array descriptions
US6189092B1 (en) 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
GB0325553D0 (en) * 2003-11-01 2003-12-03 Ibm Method and apparatus for activating/deactivating run-time determined software routines in Java compiled bytecode applications
US7926046B2 (en) * 2005-12-13 2011-04-12 Soorgoli Ashok Halambi Compiler method for extracting and accelerator template program
US20100241638A1 (en) * 2009-03-18 2010-09-23 O'sullivan Patrick Joseph Sorting contacts
US10592217B2 (en) * 2013-10-10 2020-03-17 Avaya Inc. Sharing dynamic variables in a high availability environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833775A (ja) * 1981-08-21 1983-02-28 Hitachi Ltd コンパイル方法
JPS5856152A (ja) * 1981-09-30 1983-04-02 Fujitsu Ltd プログラム変換装置
JPS58149544A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd コンパイラ処理方式

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4398249A (en) * 1970-08-12 1983-08-09 Pardo Rene K Process and apparatus for converting a source program into an object program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833775A (ja) * 1981-08-21 1983-02-28 Hitachi Ltd コンパイル方法
JPS5856152A (ja) * 1981-09-30 1983-04-02 Fujitsu Ltd プログラム変換装置
JPS58149544A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd コンパイラ処理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127127A (ja) * 1989-10-12 1991-05-30 Internatl Business Mach Corp <Ibm> コンピュータプログラムの最適化方法

Also Published As

Publication number Publication date
GB2188760A (en) 1987-10-07
US4807126A (en) 1989-02-21
JP2708405B2 (ja) 1998-02-04
GB8702665D0 (en) 1987-03-11

Similar Documents

Publication Publication Date Title
Allen et al. Automatic translation of Fortran programs to vector form
JPS62202235A (ja) コンパイラにおけるル−プ展開方式
Burch et al. Symbolic model checking: 1020 states and beyond
Allen Dependence analysis for subscripted variables and its application to program transformations
Forgy Rete: A fast algorithm for the many pattern/many object pattern match problem
Habel et al. Computational completeness of programming languages based on graph transformation
JP2506991B2 (ja) 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム
Baxter The complexity of unification
Baer et al. Model, design, and evaluation of a compiler for a parallel processing environment
Hale Programming in temporal logic
Fauth et al. Automated generation of DSP program development tools using a machine description formalism
US4417305A (en) Method for evaluating boolean expressions
Hutton et al. The generic approximation lemma
Mauborgne Abstract interpretation using TDGs
Ramamoorthy et al. Compilation techniques for recognition of parallel processable tasks in arithmetic expressions
Sites Some thoughts on proving clean termination of programs
JP3582849B2 (ja) 論理型プログラム検証方法
Watanabe et al. The macro assembler generator for microcomputers
Davis et al. A Verilog preprocessor for representing datapath components
JPH05119960A (ja) バイトオーダ依存コーデイング検出方法
Chu A methodology for software engineering
Mühlpfordt et al. Synthesis of recursive functions with interdependent parameters
Gehani Generic procedures: an implementation and an undecidability result
Markovic et al. Semi-automatic generation of parallelizable patterns from source code examples
JP2555011B2 (ja) ベクトルデ−タ処理方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees