JPH02118732A - プログラム処理方式 - Google Patents
プログラム処理方式Info
- Publication number
- JPH02118732A JPH02118732A JP27074188A JP27074188A JPH02118732A JP H02118732 A JPH02118732 A JP H02118732A JP 27074188 A JP27074188 A JP 27074188A JP 27074188 A JP27074188 A JP 27074188A JP H02118732 A JPH02118732 A JP H02118732A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- program
- processing
- optimization
- information
- 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
Links
- 238000005457 optimization Methods 0.000 abstract description 25
- 238000005206 flow analysis Methods 0.000 abstract description 13
- 238000004458 analytical method Methods 0.000 abstract description 9
- 238000004904 shortening Methods 0.000 abstract 1
- 238000000034 method Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の目的〕
(埋業」二の利用分野)
本発明はデータ処理システムにおいてソースプログラム
より目的プログラムを生成するコンパイラの最適化処理
のためのプログラム処理方式に関する。
より目的プログラムを生成するコンパイラの最適化処理
のためのプログラム処理方式に関する。
(従来の技術)
ソースプログラムより目的プログラムを生成するコンパ
イラでは、コンパイラにより生成される目的プログラム
の実行演算時間短縮のために、目的プログラム最適化部
を設け、目的プログラム最適化処理を行っていた。通常
、この目的プログラム最適化部においてはソースプログ
ラム中に出現する変数についてデータフロー解析を行い
、変数の定義や参照について(ちる変数が定義された場
合、どこで参照されるかを求めた結果)調べ、このデー
タフロー解析結果を用いて変数の定義・参照関係が求め
られ、変数の置換(定数化)を行うことが可能となる。
イラでは、コンパイラにより生成される目的プログラム
の実行演算時間短縮のために、目的プログラム最適化部
を設け、目的プログラム最適化処理を行っていた。通常
、この目的プログラム最適化部においてはソースプログ
ラム中に出現する変数についてデータフロー解析を行い
、変数の定義や参照について(ちる変数が定義された場
合、どこで参照されるかを求めた結果)調べ、このデー
タフロー解析結果を用いて変数の定義・参照関係が求め
られ、変数の置換(定数化)を行うことが可能となる。
この変数置換により目的プログラム実行演算回数の大幅
な削減が行えるため、データフロー解析を利用した目的
プログラム最適化手法が採られて来た。しかし、ここで
用いているデータフロー解析とは、基本ブロック(ブラ
ンチ命令がなく制御の流れが変わらない行の集合)と各
行の関係を表したビットベクトルの繰り返し演算により
各基本ブロック間の依存関係を求め、この依存関係によ
多変数の定数化を行う為、解析範囲によってはビットベ
クトルの長さ(行数)に制限を受けることや、流れグラ
フの深さ(解析範囲の広さ)が深い程、解析時間によシ
多くの時間を要することなどから、コンパイラの全処理
中のデータフロー解析にかかる比重が重くなシ、最適化
の為のコンパイル時間の増加を招く要因となっていた。
な削減が行えるため、データフロー解析を利用した目的
プログラム最適化手法が採られて来た。しかし、ここで
用いているデータフロー解析とは、基本ブロック(ブラ
ンチ命令がなく制御の流れが変わらない行の集合)と各
行の関係を表したビットベクトルの繰り返し演算により
各基本ブロック間の依存関係を求め、この依存関係によ
多変数の定数化を行う為、解析範囲によってはビットベ
クトルの長さ(行数)に制限を受けることや、流れグラ
フの深さ(解析範囲の広さ)が深い程、解析時間によシ
多くの時間を要することなどから、コンパイラの全処理
中のデータフロー解析にかかる比重が重くなシ、最適化
の為のコンパイル時間の増加を招く要因となっていた。
この為、この目的プログラム最適化部の処理はオプショ
ン扱い(指定により処理が行われる)とし、通常のコン
パイル時には行われない形式が取られていたが、全く最
適化処理を行わなかった場合には目的プログラムの実行
演算回数の削減が行えず、実行効率の良い目的プログラ
ムの生成が不可能であった。しかし、短い時間でフンパ
イルを行う場合でも最適化処理の必要性はあり、データ
フロー解析等の特別な最適化処理部を設けずに高速な最
適化が行える手段が求められている。従来の最適化方式
のように最適化部を設けることによシ最適化処理を行う
方式ではコンパイル時間増加を招くと共に、大規模なプ
ログラムの解析や、ベクトル化処理における効率の良い
コンパイルを柔軟に行うには不適切な面があった。
ン扱い(指定により処理が行われる)とし、通常のコン
パイル時には行われない形式が取られていたが、全く最
適化処理を行わなかった場合には目的プログラムの実行
演算回数の削減が行えず、実行効率の良い目的プログラ
ムの生成が不可能であった。しかし、短い時間でフンパ
イルを行う場合でも最適化処理の必要性はあり、データ
フロー解析等の特別な最適化処理部を設けずに高速な最
適化が行える手段が求められている。従来の最適化方式
のように最適化部を設けることによシ最適化処理を行う
方式ではコンパイル時間増加を招くと共に、大規模なプ
ログラムの解析や、ベクトル化処理における効率の良い
コンパイルを柔軟に行うには不適切な面があった。
なお、ここで用いているデータフロー解析の詳細は、F
’、E、A11en 及びJ 、CockeによるA
、ProgramData Analysis Pro
cedure (Cotrmunication of
the ACM、March、1976 )に論じられ
ている。
’、E、A11en 及びJ 、CockeによるA
、ProgramData Analysis Pro
cedure (Cotrmunication of
the ACM、March、1976 )に論じられ
ている。
(発明が解決しようとする課題)
このように従来のコンパイラの目的プログラムの最適化
は、その最適化処理に要する処理時間が多大であり、コ
ンパイル全処理中のかなり割合を占めていたため、通常
のコンパイル時には、この最適化処理は行わず、オプシ
ョン扱定があった場合のみ最適化処理が行われる方式を
採っていた。
は、その最適化処理に要する処理時間が多大であり、コ
ンパイル全処理中のかなり割合を占めていたため、通常
のコンパイル時には、この最適化処理は行わず、オプシ
ョン扱定があった場合のみ最適化処理が行われる方式を
採っていた。
しかし、通常の場合でも目的プログラムの実行効率の向
上を考慮すると簡単な最適化は必要であり、この事を実
現するために特別な最適化部を設けずに簡単な最適化を
行う手段が望まれていた。
上を考慮すると簡単な最適化は必要であり、この事を実
現するために特別な最適化部を設けずに簡単な最適化を
行う手段が望まれていた。
本発明では、このような事情を考慮してなされたもので
、その目的は、最適化処理(変数の定数化)を通常の目
的プログラム生成時に行い、最適化処理のために特別な
処理は行わず、コンパイル時間の増加を抑えることにあ
る。つまシ最適化処理を行う前に予め変数の定義に関す
る出現形態をソースプログラム解析時に把握し、変数テ
ーブルに変数の定義情報を付加し、この情報を元に変数
の定数化を行い、データフロー解析を用いることなしに
、高速な最適止金可能としたプログラム処理方式を提供
することにある。
、その目的は、最適化処理(変数の定数化)を通常の目
的プログラム生成時に行い、最適化処理のために特別な
処理は行わず、コンパイル時間の増加を抑えることにあ
る。つまシ最適化処理を行う前に予め変数の定義に関す
る出現形態をソースプログラム解析時に把握し、変数テ
ーブルに変数の定義情報を付加し、この情報を元に変数
の定数化を行い、データフロー解析を用いることなしに
、高速な最適止金可能としたプログラム処理方式を提供
することにある。
(課題全解決するための手段)
本発明はソースプログラムより目的プログラムを生成す
るコンパイラにおいて、生成された目的プログラムの実
行時間短縮を図る為の最適化処理を効率良く行う場合に
、最適化処理に必要な変数定義情報の収集をソースプロ
グラム解析時に同時に行い、ここで収集された情報全変
数の定楼情報として変数テーブルに貯えることにより、
データフロー解析によらない変数の定数化処理を行う。
るコンパイラにおいて、生成された目的プログラムの実
行時間短縮を図る為の最適化処理を効率良く行う場合に
、最適化処理に必要な変数定義情報の収集をソースプロ
グラム解析時に同時に行い、ここで収集された情報全変
数の定楼情報として変数テーブルに貯えることにより、
データフロー解析によらない変数の定数化処理を行う。
具体的にはプログラム解析r1bにおいて、ある変数が
ノースプログラム中で一回のみ定義されているか否かの
情報を収集し、この情報を変数テーブルに登録し、この
情報を元にプログラムの制御の流れの上でする範囲内に
ついて順次、中間テキストプログラムを解析しながら、
定数化可能な変数を定数として、定数化変数テーブルに
登録し、この定数化変数テーブルの情報と変数テーブル
の情報から、他の変数の定数化を行う。ここでの定数化
変数テーブルは中間テキストプログラムのある記述区間
(例えば、プログラムの先頭から最初の分岐は合流まで
、又はDOループ内等である。)ごとに記述区間用定数
化テーブルとして作成される。従って、本プログラム処
理方式ではデータフロー解析を用いずに変数の定数化が
行え、プログラム最適化のための処理の軽減を図る事が
できる。
ノースプログラム中で一回のみ定義されているか否かの
情報を収集し、この情報を変数テーブルに登録し、この
情報を元にプログラムの制御の流れの上でする範囲内に
ついて順次、中間テキストプログラムを解析しながら、
定数化可能な変数を定数として、定数化変数テーブルに
登録し、この定数化変数テーブルの情報と変数テーブル
の情報から、他の変数の定数化を行う。ここでの定数化
変数テーブルは中間テキストプログラムのある記述区間
(例えば、プログラムの先頭から最初の分岐は合流まで
、又はDOループ内等である。)ごとに記述区間用定数
化テーブルとして作成される。従って、本プログラム処
理方式ではデータフロー解析を用いずに変数の定数化が
行え、プログラム最適化のための処理の軽減を図る事が
できる。
又、変数の固有情報が得られる為、ベクトル化処理を行
う場合の解析も容易に行えるようになる。
う場合の解析も容易に行えるようになる。
つまり、プログラム最適化やベクトル処理等の変数解析
処理の軽減を図シ、コンパイラの負荷を軽減すること全
可能とした処理を具備したこと金特鑑としている。
処理の軽減を図シ、コンパイラの負荷を軽減すること全
可能とした処理を具備したこと金特鑑としている。
(作用)
本発明によれば、コンパイラ内にプログラム最適化部金
膜けることなしに変数の定数化が行えるためプログラム
の最適化のための処理時間を短縮でき、コンパイル時間
の短縮とコンパイラの処理効率向上を図れる。
膜けることなしに変数の定数化が行えるためプログラム
の最適化のための処理時間を短縮でき、コンパイル時間
の短縮とコンパイラの処理効率向上を図れる。
(実施しυ)
以下、図面全参照して本発明の実施例について説明する
。
。
第1図は本発明の一実施例に係わるプログラム処理方式
の構成図である。コンパイラ12はソースプログラム1
1を読み込んで目的プログラム13を出力する。
の構成図である。コンパイラ12はソースプログラム1
1を読み込んで目的プログラム13を出力する。
ソースプログラム11がコンパイラ12内のソース解析
部121によって読み込まれソースプログラム11の解
析及び中間テキストプログラム122への変換が行われ
る。このソースプログラム解析時に、ソースプログラム
中に表れる変数について変数テーブル124が作成され
、又この変数テーブル124内にその変数の定義情報が
付加される。ここでの付加情報とはその変数がソースプ
ログラム11内で一回のみ定義されているか否かを示す
情報でめり、この情報の作成はソースプログラム解析時
にソースプログラム中に出現する変数について、変数テ
ーブル124に既に登録されているか否かを表すフラグ
を立て、同じ変数が2度出現した場合にはフラグをクリ
アーし、フラグのクリアーが行われたこと?:表す別の
フラグを立てる。このフラグが立っている場合はその変
数の一度定義フラグは以後立てないこととする。この処
理によりソースプログラムの解析と同時に各変数の定義
が一度であるか否かを調べることができる(以下変数テ
ーブル内の、変数が一回のみ定義され7′ic@合、そ
の変数をonce−def ineと呼ぶ。)。
部121によって読み込まれソースプログラム11の解
析及び中間テキストプログラム122への変換が行われ
る。このソースプログラム解析時に、ソースプログラム
中に表れる変数について変数テーブル124が作成され
、又この変数テーブル124内にその変数の定義情報が
付加される。ここでの付加情報とはその変数がソースプ
ログラム11内で一回のみ定義されているか否かを示す
情報でめり、この情報の作成はソースプログラム解析時
にソースプログラム中に出現する変数について、変数テ
ーブル124に既に登録されているか否かを表すフラグ
を立て、同じ変数が2度出現した場合にはフラグをクリ
アーし、フラグのクリアーが行われたこと?:表す別の
フラグを立てる。このフラグが立っている場合はその変
数の一度定義フラグは以後立てないこととする。この処
理によりソースプログラムの解析と同時に各変数の定義
が一度であるか否かを調べることができる(以下変数テ
ーブル内の、変数が一回のみ定義され7′ic@合、そ
の変数をonce−def ineと呼ぶ。)。
第2図のようなプログラムの場合、変数FAI。
R1、1% 2 、 R3、几4.R6及び几7(式(
3,9)oGOTOtoによりレベル10へのジャンプ
が起こりJi、R7が複数回定義される可能性があるが
演算実行上はonce−de f ineとして扱って
問題はない)はonce−def ineであり、変数
R5HOnCe−define ではない。
3,9)oGOTOtoによりレベル10へのジャンプ
が起こりJi、R7が複数回定義される可能性があるが
演算実行上はonce−de f ineとして扱って
問題はない)はonce−def ineであり、変数
R5HOnCe−define ではない。
ソースプログラム解析部121によって生成された中間
テキストプログラム122は目的プログラム生成部12
3へ渡され中間テキストプログラムに従って順次解析ケ
し、最適化が行われる。式%式% あるので、定数化変数テーブル125へ登録される。式
(3,3)のR3、式(3,4)の几4ii右辺が定数
と定数化変数テーブル125へ皆録された変数なのでB
tnされ、左辺の変数と共に定数化変数テーブルに登録
さする。以下R3,R4Vi定数として扱えることにな
る。式(3,7)の左辺の几6tよ右辺の項が定数と定
数化変数なので定数化変数テーブル125へ登録される
。このR6は重複回定義される可能性があるが、右辺を
定数として扱えるため右辺の内容が変化せず、定数とし
て扱える。
テキストプログラム122は目的プログラム生成部12
3へ渡され中間テキストプログラムに従って順次解析ケ
し、最適化が行われる。式%式% あるので、定数化変数テーブル125へ登録される。式
(3,3)のR3、式(3,4)の几4ii右辺が定数
と定数化変数テーブル125へ皆録された変数なのでB
tnされ、左辺の変数と共に定数化変数テーブルに登録
さする。以下R3,R4Vi定数として扱えることにな
る。式(3,7)の左辺の几6tよ右辺の項が定数と定
数化変数なので定数化変数テーブル125へ登録される
。このR6は重複回定義される可能性があるが、右辺を
定数として扱えるため右辺の内容が変化せず、定数とし
て扱える。
式(3,8)(7)左辺のtL7はonce−de f
ineであるが、右辺の項eこ変数It sがあるた
め定数化変数チーフル125への登録は行わtLない。
ineであるが、右辺の項eこ変数It sがあるた
め定数化変数チーフル125への登録は行わtLない。
目的プログラム生成部123では変数の定数化を行いな
がら目的プログラム13を生成する。
がら目的プログラム13を生成する。
従って、本プログラム処理方式を用りれば最適化部によ
るデータフロー解析を行わずに変数の定数化が行え、最
適化処理を減少することができ、コンパイラにかかる負
荷を軽減することが可能となる。
るデータフロー解析を行わずに変数の定数化が行え、最
適化処理を減少することができ、コンパイラにかかる負
荷を軽減することが可能となる。
このように、変数のonce−def ine情報はプ
ログラムの最適化のみならず、ベクトル化の情報として
も使用できその応用範囲は多種にわたる事になる。
ログラムの最適化のみならず、ベクトル化の情報として
も使用できその応用範囲は多種にわたる事になる。
以上のように本発明によればプログラム処理方式におい
て、変数の定義情報を用いることにより容易に最適化情
報が得られ、データフロー解析による最適化に比べてコ
ンパイラに係る負担が軽減され、コンパイル時の処理効
率向上が図れるようVこなる。
て、変数の定義情報を用いることにより容易に最適化情
報が得られ、データフロー解析による最適化に比べてコ
ンパイラに係る負担が軽減され、コンパイル時の処理効
率向上が図れるようVこなる。
又、ベクトル化処理においても依存解析等にもA用でき
、ベクトル化処理の効率向上を図る事も可能である上で
、コンパイラの処理効率向上の為に非常に有用な処理方
式である。
、ベクトル化処理の効率向上を図る事も可能である上で
、コンパイラの処理効率向上の為に非常に有用な処理方
式である。
第1図はコンパイラの処理の構成図゛、第2図は最適化
処理用プログラムリストである。 11.122.13・・・プログラム、12・・・コン
パイラ、121・・・ソース解析部、123・・・目的
プログラム生成部、124・・・変数テーブル、125
・・・定数化変数テーブル。 代理人 弁理士 則 近 憲 佑 同 松 山 光 之−四類=”f−
tt 赴 REAL f)AI、R1,R2R3,R4,/i!
5. /lj6. R7(3,1)DATA J)A
I、R1,R2/コ /4 10. σ、20.0/
(3,2)R3二20衣pAl宸R1(3,3) R4=pAI*Q1京*2
(3,4,1F (R6,GT、R41
00丁0 10ND (3,9) (3,107 第 図
処理用プログラムリストである。 11.122.13・・・プログラム、12・・・コン
パイラ、121・・・ソース解析部、123・・・目的
プログラム生成部、124・・・変数テーブル、125
・・・定数化変数テーブル。 代理人 弁理士 則 近 憲 佑 同 松 山 光 之−四類=”f−
tt 赴 REAL f)AI、R1,R2R3,R4,/i!
5. /lj6. R7(3,1)DATA J)A
I、R1,R2/コ /4 10. σ、20.0/
(3,2)R3二20衣pAl宸R1(3,3) R4=pAI*Q1京*2
(3,4,1F (R6,GT、R41
00丁0 10ND (3,9) (3,107 第 図
Claims (1)
- ソースプログラムより目的プログラムを生成するコンパ
イラにおいて、ソースプログラム解析部及び目的プログ
ラム生成部を備え、ソースプログラム解析部にてソース
プログラム中に表れる変数についてその変数がソースプ
ログラム中で一度のみ定義されているか否かを調べる手
段と、目的プログラム生成部にてこの変数定義情報を用
いることで変数の定数化を行う手段とを具備したことを
特徴とするプログラム処理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27074188A JPH02118732A (ja) | 1988-10-28 | 1988-10-28 | プログラム処理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27074188A JPH02118732A (ja) | 1988-10-28 | 1988-10-28 | プログラム処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH02118732A true JPH02118732A (ja) | 1990-05-07 |
Family
ID=17490327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27074188A Pending JPH02118732A (ja) | 1988-10-28 | 1988-10-28 | プログラム処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH02118732A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009098739A1 (ja) * | 2008-02-05 | 2009-08-13 | Panasonic Corporation | プログラム最適化装置およびプログラム最適化方法 |
JP2009211458A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | コンパイラ、変数最適化装置、方法、及び、プログラム |
-
1988
- 1988-10-28 JP JP27074188A patent/JPH02118732A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009098739A1 (ja) * | 2008-02-05 | 2009-08-13 | Panasonic Corporation | プログラム最適化装置およびプログラム最適化方法 |
JPWO2009098739A1 (ja) * | 2008-02-05 | 2011-05-26 | パナソニック株式会社 | プログラム最適化装置およびプログラム最適化方法 |
JP2009211458A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | コンパイラ、変数最適化装置、方法、及び、プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5768596A (en) | System and method to efficiently represent aliases and indirect memory operations in static single assignment form during compilation | |
US6530079B1 (en) | Method for optimizing locks in computer programs | |
US5768595A (en) | System and method for recompiling computer programs for enhanced optimization | |
JPH04330527A (ja) | プログラムの最適化方法及びコンパイラ・システム | |
JPS62159274A (ja) | 条件分岐の分割・複写によるベクトル化方式 | |
US5067068A (en) | Method for converting an iterative loop of a source program into parellelly executable object program portions | |
US5692196A (en) | System and method for conditionally compiling a software compilation unit | |
Chen et al. | Code compaction of matching single-entry multiple-exit regions | |
CA2321016A1 (en) | Interprocedural dead store elimination | |
Eckstein et al. | Code instruction selection based on SSA-graphs | |
US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
US6665864B1 (en) | Method and apparatus for generating code for array range check and method and apparatus for versioning | |
JPH02118732A (ja) | プログラム処理方式 | |
Haarslev et al. | Optimizing Reasoning in Description Logics with Qualified Number Restrictions. | |
Kelly et al. | Effectiveness of optimizing compilation for CLP (R) | |
Autrey et al. | Initial results for glacial variable analysis | |
US6055371A (en) | Compile device, compile method and recording medium for recording compiler | |
JP3430635B2 (ja) | 定数参照最適化処理装置 | |
JP2585793B2 (ja) | コンパイラシステム | |
Dean et al. | Training compilers for better inlining decisions | |
JPH0440742B2 (ja) | ||
US20240135210A1 (en) | Replacing lambda expressions in a rete network with corresponding code classes | |
JP2701246B2 (ja) | コンパイラのベクトル化処理方式 | |
JP3152194B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 | |
Dutta et al. | TracerX: Pruning Dynamic Symbolic Execution with Deletion and Weakest Precondition Interpolation (Competition Contribution) |