JPH04278640A - コンパイラの最適化処理方式 - Google Patents

コンパイラの最適化処理方式

Info

Publication number
JPH04278640A
JPH04278640A JP6373091A JP6373091A JPH04278640A JP H04278640 A JPH04278640 A JP H04278640A JP 6373091 A JP6373091 A JP 6373091A JP 6373091 A JP6373091 A JP 6373091A JP H04278640 A JPH04278640 A JP H04278640A
Authority
JP
Japan
Prior art keywords
array elements
recursive relationship
array
array element
recursive
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
JP6373091A
Other languages
English (en)
Inventor
Midori Ota
太田 緑
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 JP6373091A priority Critical patent/JPH04278640A/ja
Publication of JPH04278640A publication Critical patent/JPH04278640A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイラの最適化処
理方式に関し、特に再帰的関係配列要素を含むループの
最適化処理方式に関する。
【0002】
【従来の技術】従来、コンパイラは図3に示すソースプ
ログラムのように、再帰的関係配列要素を含むループ構
造をコンパイルする場合にも、ループ内の再帰的関係を
もつ配列要素の解析は行わず、ソースプログラムの記述
に忠実にオブジェクトプログラムを出力している。
【0003】
【発明が解決しようとする課題】上述した従来のコンパ
イラの処理方式では、ループ内に再帰的関係をもつ配列
要素をコンパイルする場合にもソースプログラムの記述
に忠実なオブジェクトプログラムを出力しているため、
実行時に再帰的に定義・参照される配列要素は、参照ま
たは定義する度に更新されたインデックス変数を用いて
添字式の再評価を行っている。そのため、再帰的関係を
もつ配列要素を定義・参照する回数が多いほど実行時間
に無駄が生ずるという欠点があった。
【0004】本発明はこのような従来のコンパイラの処
理方式の欠点をかえりみてなされたものであり、ループ
内の再帰的関係を解消することによってプログラムの実
行時間を短縮することができるコンパイラの最適化処理
方式を提供することを目的とする。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、本発明においては、高級言語で書かれたソースプロ
グラムを入力し、オブジェクトプログラムを生成するコ
ンパイラにおいて、配列要素を含むループ構造を検出し
、検出されたループ構造内の配列要素に関して、その配
列要素の添字式からある配列要素が定義された後に再度
参照されるパターンの演算のない移送代入文が存在する
かどうかを解析する再帰的関係配列要素を含むループ構
造解析手段と、前記手段により再帰的関係配列要素を含
むループ構造と判定されたループに関して、再帰的関係
をもつ配列要素間の添字式の増分値とループの繰り返し
回数から配列要素の再帰的関係の解消が可能か否か判定
する配列要素の再帰的関係解消可否判定手段と、この配
列要素の再帰的関係解消可否判定手段によって、配列要
素の再帰的関係の解消が可能と判定された場合は、再帰
的関係をもつ配列要素の移送代入文を直後にコピーし、
その各々の配列要素の添字式を変形することにより配列
要素の再帰的関係を解消する配列要素の再帰的関係解消
手段とを備える。
【0006】
【作用】本発明はこのように構成されているので、ルー
プ内の再帰的関係を解消したオブジェクトプログラムを
出力することができる。
【0007】
【実施例】以下、本発明の実施例を図面を参照して詳細
に説明する。図1は本発明の一実施例におけるブロック
構成図である。同図において、1はソースプログラム、
2はコンパイラ、3はソースプログラム1をコンパイラ
2によりコンパイルして得られたオブジェクトプログラ
ムである。コンパイラ2は、再帰的関係配列要素を含む
ループ構造解析手段21、配列要素の再帰的関係解消可
否判定手段22、配列要素の再帰的関係解消手段23を
含んでいる。
【0008】次に、図2乃至図4を参照して上記実施例
の動作を具体的に説明する。図2は再帰的関係配列要素
を含むループを解析して最適化処理を行うまでのフロー
チャート、図3はソースプログラムレベルでの入力命令
列、図4は最適化後の命令列を示す。コンパイラ2が図
3のソースプログラムを入力し、再帰的関係配列要素を
含むループ構造の最適化を行い、図4のオブジェクトプ
ログラムを出力する場合の動作について図2のフローチ
ャートを参照して説明する。
【0009】コンパイラ2は、図3のソースプログラム
の入力命令列を入力し、再帰的関係配列要素を含むルー
プ構造解析手段21において配列要素を含むループ構造
を検出し、検出されたループ構造内の配列要素に関して
その添字式から、再帰的に定義・参照する配列要素の移
送代入文が存在するか(ステップS2)、および他に同
一配列に対して再帰的関係をもつ配列要素が存在しない
か(ステップS3)を判定し、さらにループ構造内の文
は、配列要素の移送代入文とインデックス変数の定義文
のみか(ステップS4)を判定し、条件が三つともYE
Sの場合は、配列要素の再帰的関係解消可否判定手段2
2へ、その他の場合は終了(ステップS11)へ制御を
移す。
【0010】配列要素の再帰的関係解消可否判定手段2
2では、再帰的関係の互いの配列要素の添字式の増分値
が等しいか(ステップS5)を判定する。次に、再帰的
関係の配列要素間で、定義されてから参照されるまでの
配列要素の間隔(以下データ依存回次数と呼ぶ)を定義
式(1)から求め、ループの繰り返し回数がデータ依存
回次数の倍数か(ステップS6)を判定する。以上のス
テップS5およびS6の二つの条件がともにYESの場
合は配列要素の再帰的関係解消手段23へ、その他の場
合は終了(ステップS11)へ制御を移す。
【0011】   データ依存回次数=[配列要素間の添字式の初期値
の差                      /
添字式の増分値]    ・・・・・(1)配列要素の
再帰的関係解消手段23では、まず、(データ依存回次
数−1)回の配列要素の移送代入文を直後にコピーする
(ステップS7)。次に、移送代入文各々に対して、参
照される配列要素(図3の例ではa[i−3])の添字
式を式(2)で得られる値に変更する(ステップS8)
【0012】   添字式の初期値+n*添字式の増分値      
  ・・・・・(2)  (n=0,1,…,データ依
存回次数−1)さらに、移送代入文各々に対して、定義
される配列要素(図3の例ではa[i])の添字式を式
(3)で得られる式に変更する(ステップS9)。
【0013】   元の添字式+n*添字式の増分値        
    ・・・・・(3)  (n=0,1,…,デー
タ依存回次数−1)最後に、インデックス変数の定義文
に対して、増分値を式(4)で得られる値に変更する(
ステップS10)。
【0014】   データ依存回次数*インデックス変数の増分値  
・・・・(4)図3に示したソースプログラムの入力命
令列は上記のステップS7乃至ステップS10の四つの
処理により、ループ内の該当する文が図4に示した最適
化後の命令列に変形される。
【0015】したがって、以上のような実施例の構成に
よれば、配列要素a[i]とa[i−3]による再帰的
関係が解消され、参照される配列要素a[0],a[1
],a[2]はループ内で不変な値となる。
【0016】
【発明の効果】以上説明したように本発明は、再帰的関
係をもつ配列要素を含むループ構造に関して再帰的関係
を解消し、参照する配列要素をループ内で不変な値とす
るので、インデックス変数を含む添字式の評価オブジェ
クトが削除され、プログラムの実行時間を短縮できると
いう効果がある。また、ループ内で不変な値ということ
から、参照する配列要素をあるレジスタで固定すること
も可能になるので、さらに一段とプログラムの実行時間
を短縮することができる。
【図面の簡単な説明】
【図1】本発明の一実施例のブロック構成図、
【図2】
最適化処理のフローチャート、
【図3】C言語記述によ
る入力命令列を示すソースプログラム、
【図4】C言語記述による最適化処理後の命令列を示す
ソースプログラムである。
【符号の説明】
1    ソースプログラム 2    コンパイラ 3    オブジェクトプログラム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  高級言語で書かれたソースプログラム
    を入力し、オブジェクトプログラムを生成するコンパイ
    ラにおいて、配列要素を含むループ構造を検出し、検出
    されたループ構造内の配列要素に関して、その配列要素
    の添字式からある配列要素が定義された後に再度参照さ
    れるパターンの演算のない移送代入文が存在するかどう
    かを解析する再帰的関係配列要素を含むループ構造解析
    手段と、前記手段により再帰的関係配列要素を含むルー
    プ構造と判定されたループに関して、再帰的関係をもつ
    配列要素間の添字式の増分値とループの繰り返し回数か
    ら配列要素の再帰的関係の解消が可能か否か判定する配
    列要素の再帰的関係解消可否判定手段と、この配列要素
    の再帰的関係解消可否判定手段によって配列要素の再帰
    的関係の解消が可能と判定された場合は、再帰的関係を
    もつ配列要素の移送代入文を直後にコピーし、その各々
    の配列要素の添字式を変形することにより配列要素の再
    帰的関係を解消する配列要素の再帰的関係解消手段とを
    備え、ループ構造内での配列要素の参照に対する最適化
    を図ることを特徴とするコンパイラの最適化処理方式。
JP6373091A 1991-03-06 1991-03-06 コンパイラの最適化処理方式 Pending JPH04278640A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6373091A JPH04278640A (ja) 1991-03-06 1991-03-06 コンパイラの最適化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6373091A JPH04278640A (ja) 1991-03-06 1991-03-06 コンパイラの最適化処理方式

Publications (1)

Publication Number Publication Date
JPH04278640A true JPH04278640A (ja) 1992-10-05

Family

ID=13237815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6373091A Pending JPH04278640A (ja) 1991-03-06 1991-03-06 コンパイラの最適化処理方式

Country Status (1)

Country Link
JP (1) JPH04278640A (ja)

Similar Documents

Publication Publication Date Title
US5361357A (en) Method and apparatus for optimizing computer file compilation
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
EP1111504A2 (en) Compiler processing system for generating assembly program codes for a computer comprising a plurality of arithmetic units
US5396627A (en) Method of producing object program based on interprocedural dataflow analysis of a source program
US5790866A (en) Method of analyzing definitions and uses in programs with pointers and aggregates in an optimizing compiler
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
JPH0795274B2 (ja) 配列添字解析方法
US7086047B1 (en) Determining hardware generated by high level language compilation through loop optimizations
JPH04278640A (ja) コンパイラの最適化処理方式
CN111124415B (zh) 一种开发循环代码中潜在可向量化循环的方法
US7146600B2 (en) Method and apparatus for deriving multiple test source files from one source file
CN117785645A (zh) 一种risc-v指令集的验证方法、装置和电子设备
JP2621555B2 (ja) ベクトル化処理方式
JPS5922140A (ja) 対話型コンパイル方式
JPH09265400A (ja) コンパイル最適化方式
JPH09282173A (ja) プログラムの静的解析方法
CN120688561B (zh) 一种基于MindSpore的算子处理方法及装置
JPH01140236A (ja) プログラムの逆コンパイル方式
JP3311775B2 (ja) ポインタベクトル化方式
JPS62169272A (ja) ベクトル演算列ル−プアンロ−リング処理方式
JP3373861B2 (ja) コンパイル処理装置
JPH02287737A (ja) テスト項目自動設計方式
JPH09101896A (ja) コンパイル最適化方法
JPH11161500A (ja) 実行時依存解析を行う目的プログラムの生成方法
JPH05334391A (ja) 制御回路生成装置