JPH0425942A - ループの最適化処理方式 - Google Patents

ループの最適化処理方式

Info

Publication number
JPH0425942A
JPH0425942A JP13096890A JP13096890A JPH0425942A JP H0425942 A JPH0425942 A JP H0425942A JP 13096890 A JP13096890 A JP 13096890A JP 13096890 A JP13096890 A JP 13096890A JP H0425942 A JPH0425942 A JP H0425942A
Authority
JP
Japan
Prior art keywords
loop
array element
intermediate text
expression
array
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
JP13096890A
Other languages
English (en)
Inventor
Shigeya Matsuo
篤弥 松尾
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 JP13096890A priority Critical patent/JPH0425942A/ja
Publication of JPH0425942A publication Critical patent/JPH0425942A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はコンパイラに関し、特にループの最適化処理方
式に関する。
〔従来の技術〕
従来、コンパイラでは、例えば第2図に示すFORTR
ANソースプログラムのように、ループ中に重複定義さ
れる配列要素A(1)およびA(1+1)が存在する場
合でも、重複定義される配列要素人(目およびA (+
+1)の解析は行わずにソースプログラムの記述に忠実
なオブジェクトプログラムを出力していた。
〔発明が解決しようとする課題〕
上述した従来のコンパイラでは、ループ中に重複定義さ
れる配列要素が存在していてもソースプログラムの記述
に忠実なオブジェクトプログラムを出力していたので、
オブジェクトプログラムの実行時に重複定義される配列
要素が多いほど実行時間に無駄が生ずるという欠点があ
る。
本発明の目的は、上述の点に鑑み、ループ中に重複定義
される配列要素の解析を行いループ中で配列要素の重複
定義を解消することにより、オブジェクトプログラムの
実行時間を短縮できるようにしたループの最適化処理方
式を提供することにある。
〔課題を解決するための手段〕
本発明のループの最適化処理方式は、高級言語で書かれ
たソースプログラムを読み込み構文解析を行って中間テ
キストを生成する構文解析部と、この構文解析部により
生成された中間テキストに対して最適なオブジェクトプ
ログラムを出力するために変形処理を行う最適化処理部
と、この最適化処理部により変形された中間テキストを
入力しオブジェクトプログラムを生成するコード生成部
とから構成されたコンパイラにおいて、前記最適化処理
部が、中間テキストを入力しソースプログラム中のルー
プ構造を検出して検出されたループ中から重複定義され
る配列要素を検出するループ中重複定義配列要素検出手
段と、このループ中重複定義配列要素検出手段により得
られた情報に基づいてループ中で重複定義される配列要
素対に対して重複定義を解消するためにループ内不変式
に変形する配列要素を選びその配列要素を含む文がルー
プ外に移動可能か否かを調べて移動可能な場合にその配
列要素を含む文に対応する中間テキストを添字式の終値
を用いてループ内不変式に変形する配列要素添字式変形
手段と、この配列要素添字式変形手段によりループ内不
変式に変形された中間テキストをループ外に移動するル
ープ内不変式移動手段とを存する。
〔作用〕
本発明のループの最適化処理方式では、ループ中重複定
義配列要素検出手段が中間テキストを入力しソースプロ
グラム中のループ構造を検出して検出されたループ中か
ら重複定義される配列要素を検出し、配列要素添字式変
形手段がループ中重複定義配列要素検出手段により得ら
れた情報に基づいてループ中で重複定義される配列要素
対に対して重複定義を解消するためにループ内不変式に
変形する配列要素を選びその配列要素を含む文がループ
外に移動可能か否かを調べて移動可能な場合にその配列
要素を含む文に対応する中間テキストを添字式の終値を
用いてループ内不変式に変形し、ループ内不変式移動手
段が配列要素添字式変形手段によりループ内不変式に変
形された中間テキストをループ外に移動する。
〔実施例〕
次に、本発明について図面を参照して詳細に説明する。
第1図は、本発明の一実施例に係るループの最適化処理
方式が適用されたコンパイラ2の構成を示すプロ、り図
である。このコンパイラ2は、高級言語で書かれたソー
スプログラム1を入力し、オブジェクトプログラム3を
出力するものであり、構文解析部21と、最適化処理部
4と、コード生成部25と、中間テキスト26とから、
その主要部が構成されている。
最適化処理部4は、ループ中重複定義配列要素検出手段
22と、配列要素添字式変形手段23と、ループ内不変
式移動手段24とを含んで構成されている。
なお、第1図中において、実線は制御の流れを示し、点
線はデータの流れを示す。
第5図を参照すると、配列テーブル5は、次の配列テー
ブルへのポインタと、配列基と、最初の配列要素テーブ
ルへのポインタとからなる。
第6図を参照すると、配列要素テーブル6は、次の配列
要素テーブルへのポインタと、ソース行番号域と、添字
式と、添字式の初期値と、添字式の増分値と、添字式の
終値と、定義配列要素フラグとからなる。
第7図を参照すると、重複定義テーブル7は、次の重複
定義テーブルへのポインタと、重複定義される配列要素
テーブルへのポインタと、重複定義される対の配列要素
テーブルへのポインタとからなる。
次に、このように構成された本実施例のループの最適化
処理方式の動作について説明する。
コンパイラ2が起動されると、構文解析部21は、ソー
スプログラム1を読み込み、中間テキスト26を生成す
る。例えば、第2図に示されたFORTRANソースプ
ログラムに対して、第3図に示すような第1形式中間テ
キストが生成される。
次に、最適化処理部4のループ中重複定義配列要素検出
手段22は、中間テキスト26(第1形式中間テキスト
)からソースプログラム1中のループ構造を検出すると
、次の処理(1)および(2)を行う。
(1)ループ中に含まれる全ての配列要素を検出し、配
列テーブル5と、配列要素テーブル6とを作成する。配
列要素テーブル6に対しては、添字式からその配列要素
の初期値、増分値および終値を表す式を導き、該当する
フィールドに設定する。
また、配列要素が含まれるソース行番号もソース行番号
域に格納しておく。なお、対応する配列要素がループ中
で定義される場合には、定義配列要素フラグをオンとし
、参照される場合にはオフとする。
第2図に示したFORTRANソースプログラムのDO
小ループ場合、少なくとも配列要素A。
B、CおよびDに対して、配列テーブル5および配列要
素テーブル6が作成される。
(2)中間テキスト26 (第1形式中間テキスト)、
配列テーブル5および配列要素テーブル6からループ内
に出現する同一配列領域をアクセスする2つの配列要素
に着目し、これら2つの配列要素の添字式の初期値およ
び増分値をもとに′以下の条件ta>、 (blおよび
(C)を全て満たしているか否かを調べる。全て満たす
場合は、ループ中で重複定義される関係にある配列要素
と判定し、重複定義テーブル7を作成する。
条件(a)2つの配列要素がともに定義されている(2
つの配列要素テーブルの定義配 列要素フラグがともにをオン) 条件(b)2つの配列要素の添字式の増分値が等しい。
条件(C)2つの配列要素間の添字式の初期値の差が添
字式の増分値と等しい。
第2図に示したFORTRANソースプログラムのDO
小ループ場合において、少なくとも配列要素A (1)
と配列要素A(1+1>とがループ中で重複定義される
関係にあると判定され、重複定義テーブル7が作成され
る。
第8図は、第2図に示したFORTRANソースプログ
ラム(第3図に示した第1形式中間テキスト)に対して
ループ中重複定義配列要素検出手段22により作成され
た配列テーブル5.配列要素テーブル6および重複定義
テーブル7の状態を示す。
続いて、配列要素添字式変形手段23は、以下の処理f
il〜(4)を行う。
+1.1  重複定義テーブル7より、ループ中で重複
定義される関係にある配列要素対を求める。
+21 111で求められた配列要素の互いの配列要素
テーブル6からループ内での定義順序を調べ、ループ評
価時に後から再定義される添字式を持つ配列要素をルー
プ内不変式に変形する配列要素とする。
+31  (2+でループ内不変式に変形する配列要素
を含む文の他の要素に対して、ループ外への移動が不可
能となる要因があるかどうかを調べる。
+41  (31でループ外への移動が不可能となる要
因が検出されない場合は、(2)でループ内不変式に変
形する配列要素を含む文に対応する中間テキスト26を
配列要素テーブル6の添字式の終値を用いてループ内不
変式に変形する。
第2図に示したFORTRANソースプログラムのDO
小ループ場合、ループ中で重複定義される関係にある配
列要素A(1)および配列要素A(1+1)について、
配列要素A口+1)の方がループ評価時に後から再定義
される添字式を持つのでループ内不変式に変形される配
列要素となり、その配列要素を含む文(ソース行番号n
n)が、他にループ外への移動が不可能になる要因がな
いため、配列要素A (1+1)の添字式の終値″10
1”を用いてループ内不変式に変形される。
次に、ループ内不変式移動手段24では、以下の処理(
1)を行う。
ill  配列要素添字式展開手段23によりループ内
不変式に変形された中間テキスト26をループ外に移動
する。
第2図に示したFORTRANソースプログラムのDO
ループの場合、ソース行番号nnに対応する中間テキス
ト26がループ外への移動対象となり、コンパイラ2が
定めた方法に準拠して、オブジェクトプログラム3の実
行時にループ外で評価されるように移動する。この結果
、構文解析部21により生成された第3図に示した第1
形式中間テキストは、第4図に示す第2形式中間テキス
トに変形される。
最後に、コード生成部25は、中間テキスト26(第2
形式中間テキスト)からオブジェクトプログラム3を生
成する。
〔発明の効果〕
以上説明したように本発明は、最適化処理部内にループ
中重複定義配列要素検出手段、配列要素添字式変形手段
およびループ内不変式移動手段を設け、ループ中の配列
要素の重複定義の解析を行いループ中での配列要素の重
複定義を解消するようにしたことにより、オブジェクト
プログラムの実行時間を短縮できるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例に係るループの最適化処理方
式が適用されたコンパイラの構成を示すブロフク図、 第2図は本実施例のループの最適化処理方式が適用され
るFORTRANソースプログラムの一例を示す図、 第3図は第2図に示したFORTRANソースプログラ
ムが処理された第1形式中間テキストを示す図、 第4図は第3図に示した第1形式中間テキストが処理さ
れた第2形式中間テキストを示す図、第5図は第1図中
のループ中重複定義配列要素検出手段により作成される
配列テーブルの内容を示す図、 第6図は第1図中のループ中重複定義配列要素検出手段
により作成される配列要素テーブルの内容を示す図、 第7図は第1図中のループ中重複定義配列要素検出手段
により作成される重複定義テーブルの内容を示す図、 第8図は第3図に示した第1形式中間テキストに幻して
作成された配列テーブル、配列要素テーブルおよび重複
定義テーブルの様態を示す図である。 図において、 1・・・ソースプログラム、 2・・ ・コンパイラ、 3・・・オブジェクトプログラム、 4 ・ ・ 22 ・ 23 ・ 24 ・ 25 ・ 26 ・ 最適化処理部、 構文解析部、 ループ中重複定義配列要素検出手段、 配列要素添字式変形手段、 ループ内不変式移動手段、 コード生成部、 中間テキストである。

Claims (1)

  1. 【特許請求の範囲】 高級言語で書かれたソースプログラムを読み込み構文解
    析を行って中間テキストを生成する構文解析部と、この
    構文解析部により生成された中間テキストに対して最適
    なオブジェクトプログラムを出力するために変形処理を
    行う最適化処理部と、この最適化処理部により変形され
    た中間テキストを入力しオブジェクトプログラムを生成
    するコード生成部とから構成されたコンパイラにおいて
    、前記最適化処理部が、 中間テキストを入力しソースプログラム中のループ構造
    を検出して検出されたループ中から重複定義される配列
    要素を検出するループ中重複定義配列要素検出手段と、 このループ中重複定義配列要素検出手段により得られた
    情報に基づいてループ中で重複定義される配列要素対に
    対して重複定義を解消するためにループ内不変式に変形
    する配列要素を選びその配列要素を含む文がループ外に
    移動可能か否かを調べて移動可能な場合にその配列要素
    を含む文に対応する中間テキストを添字式の終値を用い
    てループ内不変式に変形する配列要素添字式変形手段と
    、この配列要素添字式変形手段によりループ内不変式に
    変形された中間テキストをループ外に移動するループ内
    不変式移動手段と を有することを特徴とするループの最適化処理方式。
JP13096890A 1990-05-21 1990-05-21 ループの最適化処理方式 Pending JPH0425942A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13096890A JPH0425942A (ja) 1990-05-21 1990-05-21 ループの最適化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13096890A JPH0425942A (ja) 1990-05-21 1990-05-21 ループの最適化処理方式

Publications (1)

Publication Number Publication Date
JPH0425942A true JPH0425942A (ja) 1992-01-29

Family

ID=15046826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13096890A Pending JPH0425942A (ja) 1990-05-21 1990-05-21 ループの最適化処理方式

Country Status (1)

Country Link
JP (1) JPH0425942A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581762A (en) * 1993-05-18 1996-12-03 Fujitsu Limited Compiling apparatus having a function to analyze overlaps of memory addresses of two or more data expressions and a compiling method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581762A (en) * 1993-05-18 1996-12-03 Fujitsu Limited Compiling apparatus having a function to analyze overlaps of memory addresses of two or more data expressions and a compiling method

Similar Documents

Publication Publication Date Title
US8156471B2 (en) Multi-language execution method
US4821181A (en) Method for converting a source program of high level language statement into an object program for a vector processor
JPH06103463B2 (ja) コード生成方法
JPH0425942A (ja) ループの最適化処理方式
Sites Some thoughts on proving clean termination of programs
JP3047418B2 (ja) ベクトル化処理方式
JP3922699B2 (ja) ループ内不変な式の移動に関する最適化方式およびプログラム
JP2674489B2 (ja) ベクトル化処理装置
JPH03260865A (ja) ベクトル化処理方式
JPH03282935A (ja) コンパイル処理装置及びコンパイル処理方式
JP3018783B2 (ja) コンパイル方式
JPH05143356A (ja) コンパイラ装置
JPH01309125A (ja) メモリ内容監視・比較・検出方式
Robinson et al. SOFTWARE VERIFICATION RESEARCH CENTRE SCHOOL OF INFORMATION TECHNOLOGY THE UNIVERSITY OF QUEENSLAND
JPH0358232A (ja) プリプロセッサ呼び出し方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPH04119436A (ja) 自動試験システムにおける制御プログラムの汎用化方法
JPH06251054A (ja) If文下ベクトル演算最適化方法
JPH02191040A (ja) 入出力ライブラリにおけるdoループ最適化処理方式
JPS6162141A (ja) 論理型情報処理装置
JPH03235127A (ja) インライン展開処理方法
JPH0447336B2 (ja)
JPH01205230A (ja) 手続き副プログラム展開方式
JPS6398031A (ja) 添字式の値検査方式
JPH0778100A (ja) データ変換処理装置