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
Application number
JP27074188A
Other languages
English (en)
Inventor
Katsuhisa Hamazaki
濱崎 勝久
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP27074188A priority Critical patent/JPH02118732A/ja
Publication of JPH02118732A publication Critical patent/JPH02118732A/ja
Pending legal-status Critical Current

Links

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 )に論じられ
ている。
(発明が解決しようとする課題) このように従来のコンパイラの目的プログラムの最適化
は、その最適化処理に要する処理時間が多大であり、コ
ンパイル全処理中のかなり割合を占めていたため、通常
のコンパイル時には、この最適化処理は行わず、オプシ
ョン扱定があった場合のみ最適化処理が行われる方式を
採っていた。
しかし、通常の場合でも目的プログラムの実行効率の向
上を考慮すると簡単な最適化は必要であり、この事を実
現するために特別な最適化部を設けずに簡単な最適化を
行う手段が望まれていた。
本発明では、このような事情を考慮してなされたもので
、その目的は、最適化処理(変数の定数化)を通常の目
的プログラム生成時に行い、最適化処理のために特別な
処理は行わず、コンパイル時間の増加を抑えることにあ
る。つまシ最適化処理を行う前に予め変数の定義に関す
る出現形態をソースプログラム解析時に把握し、変数テ
ーブルに変数の定義情報を付加し、この情報を元に変数
の定数化を行い、データフロー解析を用いることなしに
、高速な最適止金可能としたプログラム処理方式を提供
することにある。
〔発明の構成〕
(課題全解決するための手段) 本発明はソースプログラムより目的プログラムを生成す
るコンパイラにおいて、生成された目的プログラムの実
行時間短縮を図る為の最適化処理を効率良く行う場合に
、最適化処理に必要な変数定義情報の収集をソースプロ
グラム解析時に同時に行い、ここで収集された情報全変
数の定楼情報として変数テーブルに貯えることにより、
データフロー解析によらない変数の定数化処理を行う。
具体的にはプログラム解析r1bにおいて、ある変数が
ノースプログラム中で一回のみ定義されているか否かの
情報を収集し、この情報を変数テーブルに登録し、この
情報を元にプログラムの制御の流れの上でする範囲内に
ついて順次、中間テキストプログラムを解析しながら、
定数化可能な変数を定数として、定数化変数テーブルに
登録し、この定数化変数テーブルの情報と変数テーブル
の情報から、他の変数の定数化を行う。ここでの定数化
変数テーブルは中間テキストプログラムのある記述区間
(例えば、プログラムの先頭から最初の分岐は合流まで
、又はDOループ内等である。)ごとに記述区間用定数
化テーブルとして作成される。従って、本プログラム処
理方式ではデータフロー解析を用いずに変数の定数化が
行え、プログラム最適化のための処理の軽減を図る事が
できる。
又、変数の固有情報が得られる為、ベクトル化処理を行
う場合の解析も容易に行えるようになる。
つまり、プログラム最適化やベクトル処理等の変数解析
処理の軽減を図シ、コンパイラの負荷を軽減すること全
可能とした処理を具備したこと金特鑑としている。
(作用) 本発明によれば、コンパイラ内にプログラム最適化部金
膜けることなしに変数の定数化が行えるためプログラム
の最適化のための処理時間を短縮でき、コンパイル時間
の短縮とコンパイラの処理効率向上を図れる。
(実施しυ) 以下、図面全参照して本発明の実施例について説明する
第1図は本発明の一実施例に係わるプログラム処理方式
の構成図である。コンパイラ12はソースプログラム1
1を読み込んで目的プログラム13を出力する。
ソースプログラム11がコンパイラ12内のソース解析
部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  ではない。
ソースプログラム解析部121によって生成された中間
テキストプログラム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ない。
目的プログラム生成部123では変数の定数化を行いな
がら目的プログラム13を生成する。
従って、本プログラム処理方式を用りれば最適化部によ
るデータフロー解析を行わずに変数の定数化が行え、最
適化処理を減少することができ、コンパイラにかかる負
荷を軽減することが可能となる。
このように、変数のonce−def ine情報はプ
ログラムの最適化のみならず、ベクトル化の情報として
も使用できその応用範囲は多種にわたる事になる。
〔発明の効果〕
以上のように本発明によればプログラム処理方式におい
て、変数の定義情報を用いることにより容易に最適化情
報が得られ、データフロー解析による最適化に比べてコ
ンパイラに係る負担が軽減され、コンパイル時の処理効
率向上が図れるよう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 第 図

Claims (1)

    【特許請求の範囲】
  1. ソースプログラムより目的プログラムを生成するコンパ
    イラにおいて、ソースプログラム解析部及び目的プログ
    ラム生成部を備え、ソースプログラム解析部にてソース
    プログラム中に表れる変数についてその変数がソースプ
    ログラム中で一度のみ定義されているか否かを調べる手
    段と、目的プログラム生成部にてこの変数定義情報を用
    いることで変数の定数化を行う手段とを具備したことを
    特徴とするプログラム処理方式。
JP27074188A 1988-10-28 1988-10-28 プログラム処理方式 Pending JPH02118732A (ja)

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)

* Cited by examiner, † Cited by third party
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 コンパイラ、変数最適化装置、方法、及び、プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
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)