JPH0421030A - Detection object generating system for reference of outside of declaration range of array - Google Patents

Detection object generating system for reference of outside of declaration range of array

Info

Publication number
JPH0421030A
JPH0421030A JP12133290A JP12133290A JPH0421030A JP H0421030 A JPH0421030 A JP H0421030A JP 12133290 A JP12133290 A JP 12133290A JP 12133290 A JP12133290 A JP 12133290A JP H0421030 A JPH0421030 A JP H0421030A
Authority
JP
Japan
Prior art keywords
array
loop
range
declaration
maximum value
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
JP12133290A
Other languages
Japanese (ja)
Inventor
Shizuo Goto
志津雄 後藤
Eiji Nunohiro
布広 永示
Hitoshi Fukuoka
福岡 均
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
Hitachi Solutions East Japan Ltd
Original Assignee
Hitachi Ltd
Hitachi Tohoku Software 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, Hitachi Tohoku Software Ltd filed Critical Hitachi Ltd
Priority to JP12133290A priority Critical patent/JPH0421030A/en
Publication of JPH0421030A publication Critical patent/JPH0421030A/en
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To execute the DO loop by a vector computer by generating an object for detecting efficiently whether a range referred to in the DO loop to an array is included in a declaration range or not, and setting it immediately before the DO loop. CONSTITUTION:An array reference detecting means 10 checks up all operations in a DO loop, decides whether it is a reference of an array element or not, and an array reference pattern deciding means 20 checks up a subscript expression of an array reference table recorded by the array reference detecting means 10, and decides whether a method for referring to an array element is expressed by a linear expression of a constant coefficient of a loop control variable of the DO loop or not. Subsequently, an object 9 for comparing the minimum value of a reference range to an array and the minimum value of a range in which the array is declared and comparing the maximum value of the reference range to the array and the maximum value of the range in which the array is declared, in accordance with the method for referring to the array element is set immediately before the DO loop. In such a way, the DO loop can be executed by a vector computer.

Description

【発明の詳細な説明】 1゜ 〔産業上の利用分野〕 FORTRANなどの計算機言語を機械語に変換するコ
ンパイラに関するもので、特に、配列の宣言された範囲
の外を参照した時、そのことをメツセージで知らせるた
めの検出オブジェクトを生成するコンパイル方式に関す
る。
[Detailed Description of the Invention] 1゜[Industrial Application Field] This invention relates to a compiler that converts a computer language such as FORTRAN into machine language, and especially when referring to an area outside the declared range of an array. This invention relates to a compilation method for generating detection objects for notification by message.

〔従来の技術〕[Conventional technology]

FORTRANなどの計算機言語では、従来より、プロ
グラムの中でユーザが宣言した配列の範囲の外を参照し
た時、そのことをメツセージで知らせる機能が知られて
いる。
Computer languages such as FORTRAN have long been known to have a function that notifies the user of this by sending a message when a program refers to an area outside the range of an array declared by the user.

すなわち、第2図に示すように、配列Aの大きさが10
と宣言されており、DOループの中でA(11)を参照
している時、配列の宣言範囲外参照の検出を指示するオ
プションが指定されていると、宣言範囲外のA(11)
を参照したことがエラー・メツセージとしてユーザに通
知され、ユーザは配列の宣言範囲外参照を知ることがで
きる。
That is, as shown in Figure 2, the size of array A is 10
is declared, and when A(11) is referenced in the DO loop, if the option to instruct the detection of references outside the declaration range of the array is specified, A(11) outside the declaration range is specified.
The user is notified as an error message that the array has been referenced, and the user can be made aware of the out-of-declaration range reference of the array.

この配列宣言範囲外参照検出機能を実現する方式として
、コンパイラは配列要素の参照の直前に、そこで参照す
る配列要素を表わす添字の値が配列の宣言範囲に入って
いるか否かを判定するオブジェクトを生成しておき、こ
のプログラムが実行された時、この判定が行われるよう
にする方式が知られている。
As a method to implement this function for detecting references outside the array declaration range, the compiler creates an object that determines whether the value of the subscript representing the referenced array element is within the declaration range of the array, immediately before referencing an array element. A method is known in which a program is generated and this determination is made when the program is executed.

しかし、この従来方式では、すべての配列参照のたびに
判定オブジェクトが実行されるため、上記の機能を指定
しない場合に比べ実行時間が非常に多くかかってしまう
という問題点があった。
However, in this conventional method, since the determination object is executed every time an array is referenced, there is a problem in that the execution time is much longer than when the above function is not specified.

また、近年、ベクトル計算機方式のスーパーコンピュー
タの利用が盛んであるが、それはDO非ループ中の計算
を1度に高速に実行することができるものである。とこ
ろが、上記の機能を指定すると、DO非ループ中に配列
宣言範囲外参照の判定オブジェクトが生成されるため、
ベクトル化の効果がなくなるという問題点があった。
Furthermore, in recent years, vector computer type supercomputers have been widely used, and they are capable of executing calculations during a DO non-loop at a high speed all at once. However, when the above function is specified, a judgment object for a reference outside the array declaration range is generated during the DO non-loop, so
There was a problem that the effect of vectorization was lost.

〔発明が解決しようとする課題〕 本発明は、FORTRANなどの計算機言語のコンパイ
ラにおいて、配列の宣言範囲外参照の検出を効率よ〈実
施するオブジェクトの生成方法を提供することを目的と
している。
[Problems to be Solved by the Invention] An object of the present invention is to provide a method for generating an object that efficiently detects references outside the declaration range of arrays in a compiler for a computer language such as FORTRAN.

すなわち、配列の宣言範囲外参照の検出を指示するオプ
ションが指定されても、それが指定されていないときに
比べ、実行時間がほとんど増加しないような配列の宣言
範囲外参照の検出オブジェクトを生成する手段を提供す
ることを目的としている。
In other words, even if an option that instructs the detection of out-of-scope array declaration references is specified, the execution time will hardly increase compared to when the option is not specified. The purpose is to provide a means.

本発明の他の目的は、配列に対してDOループ内で参照
される範囲が宣言範囲に入っているか否かを効率よく検
出するオブジェクトを生成しそれを該DOループの直前
に設定し、該DO非ループ中には検出用オブジェクトを
含まないようにし、該DOループをベクトル計算機で実
行できるようにする手段を提供することである。
Another object of the present invention is to generate an object that efficiently detects whether the range referenced in a DO loop for an array is within the declaration range, set it immediately before the DO loop, and set it immediately before the DO loop. It is an object of the present invention to provide a means for not including a detection object in a DO non-loop so that the DO loop can be executed by a vector computer.

〔課題を解決するための手段〕[Means to solve the problem]

上記目的を達成するために、FORTRANなどの計算
機言語のコンパイラにおいて、DOループ内の配列要素
の参照箇所を検出する配列参照検出手段と、該配列要素
の参照の仕方が該DO小ループループ制御変数の定数係
数の1次式で表現されるか否かを判定する配列参照パタ
ーン判定手段と、該配列要素の参照の仕方に応じて該配
列に対する参照範囲の最小値と該配列の宣言された範囲
の最小値との比較ならびに該配列に対する参照範囲の最
大値と該配列の宣言された範囲の最大値との比較を行う
オブジェクトを該DO小ループ直前に設定する比較オブ
ジェクト生成手段とを設ける。
In order to achieve the above object, in a compiler for a computer language such as FORTRAN, an array reference detection means for detecting a reference point of an array element in a DO loop, and a DO small loop control variable that determines how the array element is referenced. an array reference pattern determination means for determining whether or not the array is expressed by a linear expression with constant coefficients, and the minimum value of the reference range for the array and the declared range of the array depending on how the array element is referenced Comparison object generation means is provided for setting an object immediately before the DO small loop to perform comparison with the minimum value of , and the maximum value of the reference range for the array with the maximum value of the declared range of the array.

〔作用〕[Effect]

FORTRANなどの計算機言語のコンパイラにおいて
、上記の3つの手段は以下のように動作する。
In a compiler for a computer language such as FORTRAN, the above three means operate as follows.

配列参照検出手段は、DOループ内のすべての演算を調
べ、それが配列要素の参照か否かを判断し、配列要素の
参照であれば、その配列の名称と該配列内のどこを参照
しているか表わす式(添字・式と呼ぶ)を配列参照テー
ブルとして記録する。
The array reference detection means examines all operations in the DO loop, determines whether they are references to array elements, and if they are references to array elements, identifies the name of the array and where in the array it refers to. The expressions (called subscripts and expressions) that represent whether the

配列参照パターン判定手段は、上記の配列参照検出手段
が記録した配列参照テーブルの添字式を調べ、該配列要
素の参照の仕方が該DO非ループループ制御変数の定数
係数の1次式で表現されるか否かを判定する。ここで、
DO非ループループ制御変数の定数係数の1次式とは、
ループ制御変数をIとした時、C1*I十C2と表現さ
れるものをいう。ここで、C1は定数、C2は定数また
はループ不変変数である。C1が定数でなくループ不変
変数である時は、定数係数の1次式とは見なさない。比
較オブジェクト生成手段は、上記の配列参照パターン判
定手段により判定された配列要素の参照の仕方に応じて
、該配列に対する参照範囲の最小値と該配列の宣言され
た範囲の最小値との比較ならびに該配列に対する参照範
囲の最大値と該配列の宣言された範囲の最大値との比較
を行うオブジェクトを生成し、該DO非ループ直前に設
定する。生成される比較オブジェクトは、次の2種類に
なる。
The array reference pattern determining means examines the subscript expression of the array reference table recorded by the array reference detecting means, and determines whether the method of referencing the array element is expressed by a linear expression of a constant coefficient of the DO non-loop loop control variable. Determine whether or not. here,
The linear expression of the constant coefficient of the DO non-loop loop control variable is
When the loop control variable is I, it is expressed as C1*I+C2. Here, C1 is a constant, and C2 is a constant or a loop-invariant variable. When C1 is not a constant but a loop-invariant variable, it is not considered to be a linear expression with constant coefficients. The comparison object generation means compares the minimum value of the reference range for the array with the minimum value of the declared range of the array, depending on the method of referencing the array element determined by the above-mentioned array reference pattern determination means; An object is generated that compares the maximum value of the reference range for the array with the maximum value of the declared range of the array, and is set immediately before the DO non-loop. There are two types of comparison objects that are generated:

(1)ループ制御変数工の定数係数の1次式の場合 ループ制御変数工の初期値Iiと最終値Ieにより、ル
ープ制御変数工の定数係数の1次式(C1*I十C2)
の最小値Esと最大値E1は次のように決定される。
(1) In the case of a linear formula for the constant coefficient of the loop control variable, by the initial value Ii and final value Ie of the loop control variable, the linear formula for the constant coefficient of the loop control variable (C1 * I + C2)
The minimum value Es and maximum value E1 are determined as follows.

■C1が正の時、最小値Es=01*Ii十C2゜ 最大値E1=C1*Ie十 ■C1が負の時、最小値E 5=c1 * I e十0
2゜ 最大値E1=C1*Is十 C2゜ なお、該配列の宣言された範囲の最小値をLs。
■When C1 is positive, minimum value Es=01*Ii×C2゜Maximum value E1=C1*Ie×■When C1 is negative, minimum value E 5=c1*I e×0
2° Maximum value E1 = C1 * Is + C2° Note that the minimum value of the declared range of the array is Ls.

最大値をLlとする。Let the maximum value be Ll.

生成される比較オブジェクトは、次のようになる。The generated comparison object is as follows.

IF(El>Ll、OR,Es<Ls)THENCAL
L  ERRMSG ここで、ERRMSGルーチンはエラー・メツセージ出
力ルーチンの名前である。
IF(El>Ll, OR, Es<Ls) THENCAL
L ERRMSG where the ERRMSG routine is the name of the error message output routine.

(2)ループ制御変数■の定数係数の1次式でない場合 この場合には、DOループの中での該配列の参照範囲の
最小値と最大値を式で求められない。該DOループの直
前に次のようなりoループを生成し、参照範囲の最小値
と最大値を求めた上で、該配列の宣言された範囲の最小
値ならびに最大値と比較する次のようなオブジェクトを
生成する。
(2) When the loop control variable (2) is not a linear expression of a constant coefficient In this case, the minimum and maximum values of the reference range of the array in the DO loop cannot be determined by the expression. Immediately before the DO loop, create an o loop as shown below, find the minimum and maximum values of the reference range, and then compare them with the minimum and maximum values of the declared range of the array. Generate an object.

元のDOループの中での配列参照の添字式をE(I)と
する。
Let E(I) be the subscript expression for array reference in the original DO loop.

Ema x=L L Emi n=Ls DO 10  I=Ii、Ie i F、 (Ema x<E (I) ) THENE
max=E (I) I F (Emi n>E (I))THENEmin
=E (I) 10  C0NTINUE IF (Emax)Ll、OR,Emin<Ls) THEN  CALL  ERRMSGベクトル計算機
でこれを実行する場合には、上記のオブジェクトの代わ
りにベクトル実行可能な次のオブジェクトを生成する。
Emax=L L Emin=Ls DO 10 I=Ii, Ie i F, (Emax<E (I)) THENE
max=E (I) I F (Emin>E (I)) THENEmin
=E (I) 10 C0NTINUE IF (Emax)Ll, OR, Emin<Ls) THEN CALL ERRMSG When executing this on a vector calculator, the following vector executable object is generated in place of the above object.

Emax=VMAX (I=I i、I e)E (I
)Emin=VMIN (I=I i、I e)E (
I)I F (Ema x>L 1 、 ORoEmi
 n<L 5)THEN  CALL  ERRMSG
ここで、VMAX、VMINは、それぞれ最大値と最小
値を求めるベクトル演算を表わしている。
Emax=VMAX (I=I i, I e)E (I
) Emin=VMIN (I=I i, I e) E (
I) IF (Emax>L 1, ORoEmi
n<L 5) THEN CALL ERRMSG
Here, VMAX and VMIN represent vector operations for obtaining the maximum value and minimum value, respectively.

比較オブジェクトをベクトル実行することにより、高速
に配列の宣言範囲外参照の検出ができる。
By executing the comparison object as a vector, references outside the declaration range of arrays can be detected quickly.

なお、元のDOループの中での配列参照の添字式が複数
あれば、複数の添字式の最大値と最小値を求めるととも
に、複数のIF文を生成すればよい。
Note that if there are multiple subscript expressions for array references in the original DO loop, the maximum and minimum values of the multiple subscript expressions may be determined and multiple IF statements may be generated.

以上のように動作するので、配列の宣言範囲外の参照の
検出を、高速に実行するオブジェクトを生成することが
できる。さらに、ベクトル実行の場合、DOループの直
前に配列の宣言範囲外の参照の検出を行うオブジェクト
が生成され、元のDOループには配列の宣言範囲外の参
照の検出を行うオブジェクトは生成されないので、該元
のDOループはベクトル実行することができる。
As it operates as described above, it is possible to generate an object that quickly detects references outside the declaration range of an array. Furthermore, in the case of vector execution, an object that detects references outside the declaration range of the array is generated immediately before the DO loop, and an object that detects references outside the declaration range of the array is not generated in the original DO loop. , the original DO loop can be vector-implemented.

〔実施例〕〔Example〕

以下、本発明の一実施例を第1図を用いて説明する。第
1図において、1はFORTRANなどの計算機言語で
記述されたソース・プログラム、2はコンパイラ、9は
コンパイラ2により生成されるオブジェクト・プログラ
ムである。コンパイラ2は、構文解析部3、最適化部4
、ベクトル化部5、コード生成部6からなる。ソース・
プログラム1は、構文解析部3により解析され、主記憶
装置7の上の中間語8に変換される。中間語8は、最適
化部4ならびにベクトル化部5によって、実行性能のよ
い形態に変換され、最後にコード生成8116によって
レジスタ割り当てやストレージ割り付けが行われた上で
、オブジェクト9が生成される。以上の動作は従来から
知られているものなので説明は省略する。
An embodiment of the present invention will be described below with reference to FIG. In FIG. 1, 1 is a source program written in a computer language such as FORTRAN, 2 is a compiler, and 9 is an object program generated by the compiler 2. In FIG. The compiler 2 includes a syntax analysis unit 3 and an optimization unit 4.
, a vectorizer 5, and a code generator 6. sauce·
The program 1 is analyzed by the syntax analysis unit 3 and converted into intermediate language 8 on the main storage device 7 . The intermediate language 8 is converted by the optimization unit 4 and the vectorization unit 5 into a form with good execution performance, and finally the code generation 8116 performs register allocation and storage allocation, and then the object 9 is generated. The above operation is conventionally known, so a description thereof will be omitted.

本発明の配列の宣言範囲外参照の検出オブジェクト生成
を行う方法として、1つは最適化部4で行う方法がある
。もう1つの方法はベクトル北部5において行う方法で
ある。配列の宣言範囲外参照の検出を効率よく行う本発
明はベクトル計算機で実行するオブジェクトを生成する
時に最も効果を発揮するので、ここではベクトル化部5
において検出オブジェクトの生成を行う場合を説明する
One method of generating a detection object for a reference outside the declaration range of an array according to the present invention is to use the optimization unit 4. Another method is to use the vector north 5. The present invention, which efficiently detects references outside the declaration range of arrays, is most effective when generating objects to be executed on a vector computer, so here we will use the vectorization unit 5.
A case will be described in which a detection object is generated.

ベクトル化部5の中に、 (1)DOループ内の配列要素の参照箇所を検出する配
列参照検出部10 (2)該配列要素の参照の仕方が該DOループのループ
制御変数の定数係数の1次式で表現されるか否かを判定
する配列参照パターン判定部2゜(3)該配列要素の参
照の仕方に応じて該配列に対する参照範囲が宣言された
範囲に含まれているか否かを比較し検出するオブジェク
トを該DOループの直前に設定する比較オブジェクト生
成部を置く。それらは以下のように動作する。
The vectorization unit 5 includes: (1) an array reference detection unit 10 that detects the reference location of an array element in a DO loop; (2) the method of referencing the array element is based on the constant coefficient of the loop control variable of the DO loop; Array reference pattern determination unit 2 that determines whether or not it is expressed by a linear expression (3) Whether or not the reference range for the array is included in the declared range according to the way the array element is referenced A comparison object generation unit is placed immediately before the DO loop to set an object to be compared and detected. They work as follows.

配列参照検出部10は、各DOループについて以下のよ
うに動作する。
The array reference detection unit 10 operates as follows for each DO loop.

すなわち、DOループ内のあるすべての文のすべての演
算要素を調べ、それが配列要素の参照か否かを判断する
。そして、配列要素の参照であれば、その配列の名称と
該配列内のどこを参照しているか表わす式(添字式と呼
ぶ)を配列参照テーブルとして、記録する。
That is, all operational elements of all statements within the DO loop are examined to determine whether they are references to array elements. If an array element is referenced, the name of the array and an expression (referred to as a subscript expression) representing where in the array is referred to are recorded as an array reference table.

配列参照パターン判定部20は、まず、上記の配列参照
検出部10が記録した個々の配列参照テーブルの添字式
を調べる。すなわち、該配列要素の参照の仕方が、該D
Oループのループ制御変数の定数係数1次式で表現され
るか否かを判定する。
The array reference pattern determination unit 20 first examines the subscript expressions of each array reference table recorded by the array reference detection unit 10 described above. In other words, the method of referencing the array element is
It is determined whether the constant coefficient of the loop control variable of the O-loop is expressed by a linear expression.

ここで、DOループのループ制御変数の定数係数の1次
式とは、ループ制御変数を工とした時、C1*I十02
と表現されるものをいう。ここで、C1は定数、C2は
定数またはループ不変変数である。C1が定数でなくル
ープ不変変数である時は、定数係数の1次式とは見なさ
ない。
Here, the linear expression of the constant coefficient of the loop control variable of the DO loop is C1*I102 when the loop control variable is
means something that is expressed as Here, C1 is a constant, and C2 is a constant or a loop-invariant variable. When C1 is not a constant but a loop-invariant variable, it is not considered to be a linear expression with constant coefficients.

ここで、C1やC2が定数か否かの判断の仕方、および
、C2がループ不変変数か否かの判断の仕方については
、公知であるので詳細は省略する。
Here, since the method of determining whether C1 and C2 are constants and the method of determining whether C2 is a loop-invariant variable are well known, the details will be omitted.

次に、比較オブジェクト生成部30は、上記の配列参照
パターン判定部20により判定された配列要素の参照の
仕方に応じて、該配列に対する参照範囲の最小値と該配
列の宣言された範囲の最小値との比較ならびに該配列に
対する参照範囲の最大値と該配列の宣言された範囲の最
大値との比較を行うオブジェクトを生成し、該DO小ル
ープ直前に設定する。
Next, the comparison object generation unit 30 determines the minimum value of the reference range for the array and the minimum value of the declared range of the array, depending on the method of referencing the array element determined by the above-described array reference pattern determination unit 20. An object that performs comparison with the value and the maximum value of the reference range for the array and the maximum value of the declared range of the array is generated and set immediately before the DO small loop.

生成される比較オブジェクトは、次の2種類になる。There are two types of comparison objects that are generated:

(1)ループ制御変数1の定数係数の1次式の場合 第3図に、その例を示す。(1) In the case of a linear equation with a constant coefficient of loop control variable 1 An example is shown in FIG.

図において、ループ制御変数■の初期値をIiと最終値
をIeとする。また、添字式31は、ループ制御変数■
の定数係数の1次式(C1*I十〇2)として表現され
ている。その添字式31の最小値Esと最大値Elは次
のように決定される。
In the figure, the initial value of the loop control variable (■) is Ii, and the final value is Ie. Also, subscript expression 31 is the loop control variable ■
It is expressed as a linear equation (C1*I102) with constant coefficients. The minimum value Es and maximum value El of the subscript expression 31 are determined as follows.

■C1が正の時、最小値Es=C1*Ii十C2゜ 最大値E 1=c1 * I e十 ■C1が負の時、最小値ES=C1*Ie十C2゜ 最大値E1=C1*Is十 なお、該配列の宣言された範囲の最小値をLs。■When C1 is positive, the minimum value Es = C1 * Ii + C2° Maximum value E1=c1*Ie1 ■When C1 is negative, the minimum value ES = C1 * Ie + C2° Maximum value E1 = C1 * Is ten Note that the minimum value of the declared range of the array is Ls.

最大値をLlとする。Let the maximum value be Ll.

C1の正負はコンパイラによって判断される。The compiler determines whether C1 is positive or negative.

ここでは、C1が正の場合について示す。生成される比
較オブジェクト32は、次のようになる。
Here, a case where C1 is positive will be shown. The generated comparison object 32 is as follows.

E1=C1*Ie+C2 E5=C1*Ii+C2 IF(El>Ll、OR,Es<Ls)THENCAL
L  ERRMSG ここで、ERRMSGルーチンはエラー・メツセージ出
力ルーチンの名前である。
E1=C1*Ie+C2 E5=C1*Ii+C2 IF (El>Ll, OR, Es<Ls) THENCAL
L ERRMSG where the ERRMSG routine is the name of the error message output routine.

(2)ループ制御変数■の定数係数の1次式でない場合 第4図を用いて説明する。図において、配列Aの添字式
41は配列りの値によって決定される。
(2) Case where the loop control variable ■ is not a linear expression with a constant coefficient This will be explained using FIG. In the figure, the subscript expression 41 of array A is determined by the values in the array.

二の場合には、DOループの中での該配列の参照範囲の
最小値と最大値を式で求められない。この場合、該DO
ループの直前に次のようなりoループを生成し、参照範
囲の最小値と最大値を求めた上で、該配列の宣言された
範囲の最小値ならびに最大値と比較する次のようなオブ
ジェクトを生成する。
In the second case, the minimum and maximum values of the reference range of the array in the DO loop cannot be determined by formulas. In this case, the DO
Immediately before the loop, generate an o loop as shown below, find the minimum and maximum values of the reference range, and then create the following object to compare with the minimum and maximum values of the declared range of the array. generate.

元のDOループの中での配列参照の添字式41%式%) ベクトル計算機でこれを実行する場合には、上記のオブ
ジェクトの代わりに、ベクトル実行可能な次のオブジェ
クト42を生成する。
Subscript expression 41% expression of array reference in original DO loop) When executing this with a vector calculator, the next vector-executable object 42 is generated in place of the above object.

Emax=VMAX (I=I i、I e)L (I
)Emin=VMIN (I=I i、I e)L (
I)IF (Emax)Ll、OR,Emin<Ls)
THEN  CALL  ERRMSGここで、VMA
X、VMINは、それぞれ最大値と最小値を求めるベク
トル演算を表わしている。
Emax=VMAX (I=I i, I e)L (I
)Emin=VMIN (I=I i, I e)L (
I) IF (Emax)Ll, OR, Emin<Ls)
THEN CALL ERRMSG where VMA
X and VMIN represent vector operations for finding the maximum value and minimum value, respectively.

比較オブジェクトをベクトル実行する二とにより、高速
に配列の宣言範囲外参照の検出ができる。
By executing the comparison object as a vector, references outside the declaration range of the array can be detected at high speed.

以上に説明したように、本実施例によれば、DOループ
内の配列参照に対して、その宣言範囲外参照を検出する
オブジェクトを該DOループに対してまとめて1回だけ
行うようにてきるので、宣言範囲外参照を検出を行わな
い時に比べて実行速度の低下を防ぐことができる。また
、元のDOループをベクトル実行できるので、配列の宣
言範囲外参照を検出でき、かつ、ベクトル計算機の性能
を十分に引き出すことができる。
As explained above, according to this embodiment, for array references within a DO loop, the object that detects references outside the declaration range is performed only once for the DO loop. Therefore, it is possible to prevent a decrease in execution speed compared to when references outside the declaration range are not detected. Furthermore, since the original DO loop can be executed vectorwise, references outside the declaration range of arrays can be detected, and the performance of the vector computer can be fully utilized.

〔発明の効果〕〔Effect of the invention〕

本発明によれば、配列の宣言範囲外参照の検出を効率よ
〈実施するオブジェクトの生成方法を提供することがで
きる。
According to the present invention, it is possible to provide an object generation method that efficiently detects a reference outside the declaration range of an array.

すなわち、配列の宣言範囲外参照の検出を指示するオプ
ションが指定されても、それが指定されていないときに
比べ、実行時間がほとんど増加しないような配列の宣言
範囲外参照の検出オブジェクトを生成する手段を提供す
ることができる。
In other words, even if an option that instructs the detection of out-of-scope array declaration references is specified, the execution time will hardly increase compared to when the option is not specified. means can be provided.

さらに、配列に対してDOループ内で参照される範囲が
宣言範囲に入っているか否かを効率よく検出するオブジ
ェクトを生成し、それを該DOループの直前に設定し、
該DOループの中には検出用オブジェクトを含まないよ
うにできるので、該DOループをベクトル計算機で実行
できるようにする手段を提供することができる。
Furthermore, create an object that efficiently detects whether the range referenced within the DO loop for the array is within the declaration range, and set it immediately before the DO loop,
Since the DO loop does not include a detection object, it is possible to provide a means for executing the DO loop with a vector computer.

【図面の簡単な説明】[Brief explanation of drawings]

第1図は、本発明が適用されたコンパイラの構成図、第
2図は、配列の宣言範囲外参照のあるプログラムの例を
示す図、第3図、は配列参照の添字式がループ制御変数
の定数係数1次式の場合の配列の宣言範囲外参照を検出
するオブジェクトを示す図、第4図は、配列参照の添字
式がループ制御変数の定数係数1次式でない場合の配列
の宣言範囲外参照を検出するオブジェクトを示す図であ
る。 1・・・ソース・プログラム、2・・・コンパイラ、3
・・構文解析部、4・・・最適化部、5・・・ベクトル
化部、6・・・コード生成部、7・・・主記憶装置、8
・・・中間語、9・・・生成されるオブジェクト、10
・・・配列参照検出部、20・・・配列参照パターン版
底部、30・・比較オブジェクト生成部、31.41・
添字式、32.42・・・比較オブジェクト。
Figure 1 is a configuration diagram of a compiler to which the present invention is applied. Figure 2 is a diagram showing an example of a program with a reference outside the declaration range of an array. Figure 3 is a diagram in which the subscript expression of an array reference is a loop control variable. Figure 4 shows an object that detects a reference outside the declaration range of an array when the constant coefficient linear expression is a constant coefficient linear expression. FIG. 3 is a diagram illustrating an object that detects an external reference. 1... Source program, 2... Compiler, 3
...Syntax analysis unit, 4...Optimization unit, 5...Vectorization unit, 6...Code generation unit, 7...Main storage device, 8
...Intermediate language, 9...Generated object, 10
...Array reference detection unit, 20...Array reference pattern version bottom, 30.Comparison object generation unit, 31.41.
Subscript expression, 32.42... Comparison object.

Claims (1)

【特許請求の範囲】[Claims] 1、FORTRANなどの計算機言語のコンパイラにお
いて、DOループ内における配列要素の参照箇所を検出
する配列参照検出手段と、該配列要素の参照の仕方が該
DOループのループ制御変数の定数係数の1次式で表現
されるか否かを判定する配列参照パターン判定手段と、
該配列要素の参照の仕方に応じて該配列に対する参照範
囲の最小値と該配列の宣言された範囲の最小値との比較
ならびに該配列に対する参照範囲の最大値と該配列の宣
言された範囲の最大値との比較を行うオブジェクトを該
DOループの直前に設定する比較オブジェクト生成手段
とを設けることを特徴とする配列の宣言範囲外参照の検
出オブジェクト生成方式。
1. In a compiler for a computer language such as FORTRAN, there is an array reference detection means that detects the reference point of an array element in a DO loop, and the method of referencing the array element is linear in the constant coefficient of the loop control variable of the DO loop. Array reference pattern determining means for determining whether or not it is expressed by an expression;
Comparison of the minimum value of the reference range for the array and the minimum value of the declared range of the array, and the comparison of the maximum value of the reference range for the array and the declared range of the array, depending on how the array element is referenced. 1. A detection object generation method for a reference outside the declaration range of an array, characterized in that a comparison object generation means is provided for setting an object to be compared with a maximum value immediately before the DO loop.
JP12133290A 1990-05-14 1990-05-14 Detection object generating system for reference of outside of declaration range of array Pending JPH0421030A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12133290A JPH0421030A (en) 1990-05-14 1990-05-14 Detection object generating system for reference of outside of declaration range of array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12133290A JPH0421030A (en) 1990-05-14 1990-05-14 Detection object generating system for reference of outside of declaration range of array

Publications (1)

Publication Number Publication Date
JPH0421030A true JPH0421030A (en) 1992-01-24

Family

ID=14808644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12133290A Pending JPH0421030A (en) 1990-05-14 1990-05-14 Detection object generating system for reference of outside of declaration range of array

Country Status (1)

Country Link
JP (1) JPH0421030A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08194624A (en) * 1995-01-20 1996-07-30 Fujitsu Ltd Executing form program preparing method
JP2007249262A (en) * 2006-03-13 2007-09-27 Nec Corp System and method for detecting access out of range of array
JP2017142733A (en) * 2016-02-12 2017-08-17 富士通株式会社 Driver generation program, apparatus, and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08194624A (en) * 1995-01-20 1996-07-30 Fujitsu Ltd Executing form program preparing method
JP2007249262A (en) * 2006-03-13 2007-09-27 Nec Corp System and method for detecting access out of range of array
JP4561998B2 (en) * 2006-03-13 2010-10-13 日本電気株式会社 Out-of-sequence access detection method and method
JP2017142733A (en) * 2016-02-12 2017-08-17 富士通株式会社 Driver generation program, apparatus, and method

Similar Documents

Publication Publication Date Title
US6314560B1 (en) Method and apparatus for a translation system that aggressively optimizes and preserves full synchronous exception state
US6332216B1 (en) Hybrid just-in-time compiler that consumes minimal resource
US7434030B2 (en) Processor system having accelerator of Java-type of programming language
US6546550B1 (en) Method to determine dynamic compilation time and to select bytecode execution mode
US4843545A (en) Compile method using copy propagation of a variable
JP2004062830A (en) Program conversion method, data processor using the same and program
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
JPH0421030A (en) Detection object generating system for reference of outside of declaration range of array
US7240337B2 (en) Executing scalar replacement in program optimization
KR102690152B1 (en) Method for determining optimal placement of phasor measurement unit and electronic device thereof
JPH01277934A (en) Switching system for parameter list reference method
US7278138B2 (en) Computer program conversion and compilation
KR101024707B1 (en) Interpreter call method for bytecode-to-c ahead-of-time compiler
JPS62204374A (en) Processing system for double arithmetic optimization
JP2002099425A (en) Conversion method of local variable for global variable
JP3956113B2 (en) Data processing apparatus and program
Suedholt et al. On interprocedural data flow analysis for object oriented languages
JPS63155264A (en) Language tuning processing system for vector computer
JPH01274241A (en) Instruction string generating system
JP2665392B2 (en) Compile processing method
KR20050078397A (en) Method for reducing load in getting and setting information of object and processor therefor
JPH10326193A (en) Compile method for optimizing inline expansion function
JPH0452987B2 (en)
KR0170706B1 (en) External memory usage of microprocessor
JP2682215B2 (en) Procedure call method during parallel processing