JP3235462B2 - while loop structure conversion device - Google Patents

while loop structure conversion device

Info

Publication number
JP3235462B2
JP3235462B2 JP11121796A JP11121796A JP3235462B2 JP 3235462 B2 JP3235462 B2 JP 3235462B2 JP 11121796 A JP11121796 A JP 11121796A JP 11121796 A JP11121796 A JP 11121796A JP 3235462 B2 JP3235462 B2 JP 3235462B2
Authority
JP
Japan
Prior art keywords
loop
expression
control variable
update
repetition
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.)
Expired - Fee Related
Application number
JP11121796A
Other languages
Japanese (ja)
Other versions
JPH09282171A (en
Inventor
浩史 白井
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 JP11121796A priority Critical patent/JP3235462B2/en
Publication of JPH09282171A publication Critical patent/JPH09282171A/en
Application granted granted Critical
Publication of JP3235462B2 publication Critical patent/JP3235462B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、C言語で記述され
た繰り返し数の計算が困難なwhileループを、繰り
返し数が容易に計算できるforループに変換するwh
ileループ構造変換装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a wh for converting a while loop which is difficult to calculate the number of repetitions described in C language into a for loop which can easily calculate the number of repetitions.
The present invention relates to an ile loop structure conversion device.

【0002】[0002]

【従来の技術】ループ構造に対してベクトル化等の並列
化を行うことにより処理速度を高速化するということは
従来から行われている。ところで、ループを並列化する
場合には、ループの入口点に於いてループの繰り返し数
を求めておくことが必要であり、従来は次のようにして
ループの繰り返し数を求めるようにしている。
2. Description of the Related Art It has been conventionally performed to increase the processing speed by performing parallelization such as vectorization on a loop structure. By the way, when parallelizing a loop, it is necessary to obtain the number of loop repetitions at the entry point of the loop. Conventionally, the number of loop repetitions is obtained as follows.

【0003】例えば、ループがFORTRAN言語のD
Oループの場合は、ループの制御変数が存在し、更に、
制御変数の初期値,終値,増分値が記述されているた
め、繰り返し数=(終値−初期値+増分値)/増分値な
る演算を行うことにより、容易にループの繰り返し数を
求めることができる。
[0003] For example, the loop is a D in the FORTRAN language.
In the case of an O loop, there are control variables for the loop, and
Since the initial value, the closing value, and the increment value of the control variable are described, the number of repetitions of the loop can be easily obtained by performing the calculation of the number of repetitions = (closing value−initial value + increment value) / increment value. .

【0004】また、明確なループ制御変数を用いなくて
も記述可能なC言語のforループの場合は、forル
ープに与えられた第1式(初期化式),第2式(繰り返
し条件式),第3式(増分式)の3つの式から、ループ
の制御変数と、その初期値,終値,増分値とを求め、そ
れらに基づいて上記したと同様の演算を行うことにより
ループの繰り返し数を求めている(例えば、特開平5−
303499号公報)。
In the case of a C language for loop which can be described without using a clear loop control variable, the first expression (initialization expression) and the second expression (repetition condition expression) given to the for loop , The control variable of the loop and its initial value, final value, and increment value are obtained from the three expressions (increment expression), and the same operation as described above is performed based on them to obtain the number of loop iterations. (See, for example,
No. 303499).

【0005】[0005]

【発明が解決しようとする課題】一方、C言語で記述さ
れたwhileループには、forループの第1式,第
3式に相当する式がなく、第2式に相当する繰り返し条
件式のみが存在している。そのため、whileループ
に於いては、forループのように制御変数及びその初
期値,終値,増分値を確定することができず、ループの
繰り返し数が求められなかった。従って、whileル
ープについては、従来、ベクトル化等の並列化を行うこ
とが困難であった。
On the other hand, in a while loop written in C language, there are no expressions corresponding to the first and third expressions of the for loop, and only a repetition condition expression corresponding to the second expression is provided. Existing. Therefore, in the while loop, the control variables and their initial values, closing values, and increment values cannot be determined as in the for loop, and the number of loop iterations cannot be obtained. Therefore, it has been conventionally difficult to perform parallelization such as vectorization on a while loop.

【0006】そこで、本発明の目的は、C言語で記述さ
れたwhileループをループ繰り返し数を求めること
が可能なforループに変換することにより、whil
eループに対してもベクトル化等の並列化を行えるよう
にすることにある。
Accordingly, an object of the present invention is to convert a while loop written in C language into a for loop capable of obtaining the number of loop iterations, thereby providing a while loop.
An object of the present invention is to enable parallelization such as vectorization for the e-loop.

【0007】[0007]

【課題を解決するための手段】本発明は上記目的を達成
するため、ソースファイルからwhileループを抽出
するループ構造解析部と、該ループ構造解析部が抽出し
たwhileループを、初期化式と繰り返し条件式と増
分式と前記whileループ中の制御変数に対する更新
式と対応する更新式とを含むforループであって、前
記初期化式として前記whileループの制御変数がル
ープに入る直前に保持していた値を、前記whileル
ープの制御変数とは異なる前記forループの制御変数
の初期値にする式を含み、前記繰り返し条件式として前
記forループの制御変数が前記whileループの繰
り返し条件式によって定まる終値に達したか否かを判定
する式を含み、前記増分式として前記whileループ
中に制御変数に対する更新式が複数含まれている場合
は、該複数の更新式それぞれに於ける、制御変数を増加
或いは減少させる値の合計値だけ前記forループの制
御変数を増加或いは減少させる式を含み、前記whil
eループ中の制御変数に対する更新式と対応する更新式
として前記whileループの制御変数を前記forル
ープの制御変数のインダクション変数とする式を含むf
orループに変換するループ構造変換部とを備えたもの
である。
In order to achieve the above object, the present invention provides a loop structure analysis unit for extracting a while loop from a source file and a while loop extracted by the loop structure analysis unit by repeating an initialization expression. A for loop including a conditional expression, an incremental expression, an update expression for a control variable in the while loop, and a corresponding update expression, wherein the control variable of the while loop is held as the initialization expression immediately before entering the loop. And a final value determined by the repetition condition expression of the while loop as the repetition condition expression, wherein the control variable of the for loop is an initial value of the control variable of the for loop different from the control variable of the while loop. And an expression for determining whether or not the while loop has been reached.
Contains multiple update expressions for control variables
Increases the control variables in each of the multiple update expressions
Or a formula for increasing or decreasing the control variable of the for loop by a total value of the decreasing values,
An update expression corresponding to the control variable in the e-loop and an update expression corresponding to the control variable of the while loop as an induction variable of the control variable of the for loop as an update expression
and a loop structure conversion unit for converting into an or loop.

【0008】上記構成に於いては、ループ構造解析部
が、ソースファイルからwhileループを抽出し、ル
ープ構造変換部が、上記whileループを、初期化式
と繰り返し条件式と増分式とwhileループ中の制御
変数に対する更新式と対応する更新式とを含むforル
ープに変換する。
In the above configuration, the loop structure analysis unit extracts a while loop from the source file, and the loop structure conversion unit converts the while loop into an initialization expression, a repetition condition expression, an increment expression, and a while loop. Is converted into a for loop including an update expression for the control variable and a corresponding update expression.

【0009】また、本発明は、変換後のforループに
対してベクトル化等の並列化を行うことができない場合
であっても、元のwhileループをそのままスカラで
実行するより処理を高速に行えるようにするため、前記
ループ構造変換部は、前記whileループ中のループ
内不変式を前記forループの直前に組み込む構成を備
えたものである。
Further, according to the present invention, even when parallelization such as vectorization cannot be performed on a converted for loop, the processing can be performed at higher speed than when the original while loop is directly executed as a scalar. In order to achieve this, the loop structure conversion unit is configured to incorporate a loop invariant in the while loop immediately before the for loop.

【0010】上記構成に於いては、ループ構造変換部
が、whileループ中のループ内不変式をforルー
プの直前に組み込む。
[0010] In the above configuration, the loop structure conversion unit incorporates the in-loop invariant in the while loop immediately before the for loop.

【0011】[0011]

【発明の実施の形態】次に本発明の実施の形態について
図1を参照して詳細に説明する。
Next, an embodiment of the present invention will be described in detail with reference to FIG.

【0012】ループ構造変換装置1内のループ構造解析
部11は、ソースファイル2を読み込み、whileル
ープ21の記述を探す。whileループ21の記述を
探し出すと、ループ構造解析部11は、それを変換対象
として繰り返し条件判定部12に渡す。whileルー
プ以外の記述は、そのまま、中間ファイル3に書き出
す。
The loop structure analyzer 11 in the loop structure converter 1 reads the source file 2 and searches for a description of a while loop 21. When the description of the while loop 21 is found, the loop structure analysis unit 11 passes the description to the repetition condition determination unit 12 as a conversion target. The description other than the while loop is written to the intermediate file 3 as it is.

【0013】繰り返し条件判定部12は、whileル
ープ21の繰り返し条件式211が比較識別子を含むか
否かを、即ち図2に示す繰り返し条件式のパターンに合
致するかどうかを試験する。条件式の左辺及び右辺の式
は、変数,定数同士の演算から構成され、関数が含まれ
ていてはならない。もし、繰り返し条件式211が図2
に示すパターンに合致していなかったり、関数を含んで
いるならwhileループ21は、変換対象からはずさ
れ、元の形のままの形で中間ファイル3に書き出され
る。
The repetition condition determination unit 12 tests whether the repetition condition expression 211 of the while loop 21 includes a comparison identifier, that is, whether the repetition condition expression 211 matches the pattern of the repetition condition expression shown in FIG. The expressions on the left and right sides of the conditional expression are composed of operations between variables and constants, and must not include functions. If the conditional expression 211 is
If the pattern does not match the pattern shown in (1) or contains a function, the while loop 21 is removed from the conversion target and written out to the intermediate file 3 in the original form.

【0014】制御変数抽出部13は、繰り返し条件判定
部12に於いて繰り返し条件のパターンに合致するとみ
なされた繰り返し条件式211の中からループの制御変
数を探し出す。制御変数は、ループの繰り返し毎に一定
値ずつ単調増加或いは単調減少しなくてはならない。逆
に、制御変数以外の変数に関しては、ループ内で常に一
定の値を保たねばならない。よって、繰り返し条件式2
11中の、左辺及び右辺の式中に現れる変数の内、ルー
プ内で更新されるものがただ1つである時、それが制御
変数となる可能性がある。
The control variable extraction unit 13 searches for a control variable of the loop from the repetition condition expression 211 which is determined by the repetition condition determination unit 12 to match the pattern of the repetition condition. The control variable must monotonically increase or decrease by a constant value each time the loop is repeated. Conversely, variables other than control variables must always keep a constant value in the loop. Therefore, iterative conditional expression 2
When only one of the variables appearing in the expressions on the left and right sides in FIG. 11 is updated in the loop, it may be a control variable.

【0015】制御変数抽出部13では、繰り返し条件式
211中に現れる変数のそれぞれについて、ループ内で
更新があるかどうかについて調べ、ただ1つの変数のみ
がループ内で更新されており、それ以外の変数について
は、ループ内で更新されることがない場合のみ、この変
数を制御変数として抽出する。制御変数が抽出できない
場合には、このwhileループ21を変換対象のルー
プからはずし、元の形のまま中間ファイル3に書き出
す。
The control variable extracting unit 13 checks whether or not each of the variables appearing in the conditional expression 211 is updated in the loop. Only one variable is updated in the loop. The variable is extracted as a control variable only when it is not updated in the loop. If the control variables cannot be extracted, the while loop 21 is removed from the loop to be converted, and written in the intermediate file 3 in its original form.

【0016】次に、増分式判定部14に於いて、制御変
数抽出部13が抽出した制御変数の更新式212につい
て検査を行い、更新式212が増分式であるかどうかを
試験する。更新式212が増分式であるかどうかを見極
めるために、増分式判定部14は、更新式212が図3
に示すような増分式のパターンに合致しているかどうか
を試験する。増分式中に現れるループ内不変式は、変
数,定数同士の演算で構成されるが、ループ内では常に
一定の値とならねばならない。このため、ループ内不変
式の中に変数が存在する場合、この変数は、ループ内で
更新があってはならない。また、増分式は、ループの繰
り返し毎に必ず実行されなければならない。よって、増
分式は、条件文下の実行文であってはならない。増分式
判定部14は、併せてこの条件の試験も行う。
Next, the increment type determining unit 14 checks the control variable updating expression 212 extracted by the control variable extracting unit 13 and tests whether the updating expression 212 is an incremental type. In order to determine whether the update expression 212 is an incremental expression, the incremental expression determining unit 14 determines whether the update expression 212
Test to see if it matches the incremental pattern as shown in The invariant expression in the loop that appears in the increment expression is composed of operations of variables and constants, but must always have a constant value in the loop. Thus, if a variable exists in an invariant in a loop, this variable must not be updated in the loop. Also, the increment expression must be executed every time the loop is repeated. Therefore, the increment expression must not be an executable statement under the conditional statement. The incremental type determination unit 14 also performs a test under this condition.

【0017】本発明の特徴の1つとして、制御変数の更
新式がwhileループ中の複数の箇所に現れても、f
orループへの変換が可能であることが挙げられるが、
この場合、制御変数についての全ての更新式〔1〕〜更
新式〔n〕が上記した条件を満たしていなくてはならな
い。もし、上記の条件に当てはまらない制御変数の更新
式が1つでも存在する場合は、whileループ21は
変換の対象からはずされ、中間ファイル3にそのまま書
き出される。
One of the features of the present invention is that even if an update expression of a control variable appears at a plurality of places in a while loop, f
Although it is possible to convert to or loop,
In this case, all of the update expressions [1] to [n] for the control variables must satisfy the above conditions. If there is at least one control variable update expression that does not satisfy the above condition, the while loop 21 is excluded from the conversion target and is written out to the intermediate file 3 as it is.

【0018】ループ構造変換部15は、繰り返し条件判
定部12が繰り返し条件式のパターンに合致していると
判定した繰り返し条件式211と、制御変数抽出部13
が抽出した制御変数と、増分式判定部14が増分式であ
ると判定した更新式212とに基づいて、whileル
ープ21をforループ31,終値の計算式313,増
分値の計算式314に変換し、それを中間ファイル3に
書き出す。
The loop structure conversion unit 15 includes a repetition condition expression 211 that the repetition condition determination unit 12 determines to match the pattern of the repetition condition expression, and a control variable extraction unit 13
Is converted into the for loop 31, the closing price calculation formula 313, and the increment calculation formula 314, based on the control variables extracted by the formula (1) and the update formula 212 determined by the increment formula determination unit 14 to be the increment formula. And writes it to intermediate file 3.

【0019】C言語によるforループの記述は、FO
RTRAN言語のDOループに比べて記述の自由度が高
く、DOループのように制御変数の値域によってループ
が繰り返されるもの以外にも様々なループを記述でき
る。しかし、このようなループでは、ループの繰り返し
数が不明となり、ベクトル化,並列化といった最適化を
行えなくなってしまう。そこで、forループ31は、
DOループと同様に制御変数を用いてループを構成し、
その初期値,終値,増分値が明確になるようにする。
The description of the for loop in C language is FO
The degree of freedom of description is higher than that of the DO loop of the RTRAN language, and various loops can be described other than those in which the loop is repeated depending on the value range of the control variable such as the DO loop. However, in such a loop, the number of iterations of the loop becomes unknown, and optimization such as vectorization and parallelization cannot be performed. So, for loop 31
A loop is formed using control variables in the same manner as the DO loop,
Make the initial value, closing price, and increment value clear.

【0020】変換後のforループ31に用いる制御変
数は、元のwhileループとは異なるforループの
制御変数を用いる。元のwhileループに使われてい
た制御変数は、forループの制御変数のインダクショ
ン変数(ループの制御変数の、ループの繰り返し毎の増
加或いは減少に比例して増加減少する変数で、制御変数
の一次式で表される)となる。
As a control variable used in the converted for loop 31, a control variable of a for loop different from the original while loop is used. The control variable used in the original while loop is the induction variable of the control variable of the for loop (the variable that increases and decreases in proportion to the increase or decrease of the control variable of the loop at each iteration of the loop, and the primary variable of the control variable It is expressed by a formula).

【0021】forループに与える第1式3111,第
2式3112,第3式3113は、次のようになる。
The first expression 3111, the second expression 3112, and the third expression 3113 given to the for loop are as follows.

【0022】第1式3111は、forループの制御変
数に対して初期値を与える初期化式であり、ループの入
口で1回だけ実行される。
The first expression 3111 is an initialization expression for giving an initial value to a control variable of the for loop, and is executed only once at the entrance of the loop.

【0023】第2式3112は、forループの繰り返
し条件式で、ループが繰り返される度に評価され、評価
結果が偽になると、ループは終了する。ここでは、fo
rループの制御変数が、終値に達したかどうかを評価す
る式を与える。
The second expression 3112 is a for loop repetition conditional expression, which is evaluated each time the loop is repeated, and terminates when the evaluation result becomes false. Here, fo
Gives an expression that evaluates whether the control variable of the r loop has reached the closing price.

【0024】第3式3113は、forループの増分式
で、ループの繰り返し毎にforループの制御変数を一
定の値だけ増加或いは減少させる。
The third expression 3113 is an increment expression of a for loop, and increases or decreases a control variable of the for loop by a constant value every time the loop is repeated.

【0025】更に、それぞれの式について詳しく説明す
る。
Further, each formula will be described in detail.

【0026】第1式(初期化式)3111:The first expression (initialization expression) 3111:

【0027】forループの制御変数に対して初期値を
与える式であり、元のwhileループに於いてループ
に入る直前でwhileループの制御変数に保持されて
いた値を初期値とするものである。つまり、第1式31
11は、下記(A)のようになる。
This is an expression for giving an initial value to the control variable of the for loop. The initial value is the value held in the control variable of the while loop immediately before entering the loop in the original while loop. . That is, the first expression 31
11 is as shown in (A) below.

【0028】 forループの制御変数=whileループの制御変数 … (A)Control variable of for loop = control variable of while loop (A)

【0029】第2式(繰り返し条件式)3112:The second expression (repetition condition expression) 3112:

【0030】whileループの繰り返し条件式211
中のある制御変数を条件式の左辺に移項し、それ以外の
ループ内で一定の値をとる変数,定数を右辺に移項し、
下記(B)に示すように変形する。
The while loop iteration conditional expression 211
The control variable in the middle is moved to the left side of the conditional expression, variables and constants that take a certain value in the other loops are moved to the right side,
It is deformed as shown in (B) below.

【0031】 whileループ 比較条件子 ループ内不変式 … (B)A while loop comparison condition invariant in a loop (B)

【0032】ここで、ループ内不変式は、ループの内部
で常に一定の値をとるので、ループの繰り返し毎に計算
されるのでは効率が悪い。そこで、ループ内不変式中に
変数を含む場合には、不変式のとる値を終値とし、終値
の計算式313を下記(C)に示すものとおいて、この
式をforループの前で予め計算しておく。
Here, since the invariant in the loop always takes a constant value inside the loop, it is inefficient if it is calculated every time the loop is repeated. Therefore, when a variable is included in the invariant expression in the loop, the value taken by the invariant expression is set as the closing value, and the closing value calculation formula 313 is shown in the following (C), and this formula is calculated in advance before the for loop. Keep it.

【0033】終値=ループ内不変式 … (C)Closing value = invariant expression in loop (C)

【0034】これにより、繰り返し条件式は、下記
(D)のように書き改められる。
As a result, the repetition conditional expression is rewritten as shown in the following (D).

【0035】 whileループの制御変数 比較条件子 終値 … (D)Control variable of while loop Comparison conditioner Close value (D)

【0036】更に、このwhileループの制御変数を
forループの制御変数に置き換えたものを第2式31
12とする。つまり、第2式3112は下記(E)に示
すものとなる。
Further, the control variable of the while loop replaced with the control variable of the for loop is given by the following equation (31).
It is assumed to be 12. That is, the second expression 3112 is as shown in the following (E).

【0037】 forループの制御変数 比較条件子 終値 … (E)Control Variable of For Loop Comparison Conditioner Closing Price (E)

【0038】第3式(増分式)3113:The third expression (incremental expression) 3113:

【0039】先ず、元のwhileループに於ける制御
変数の更新式212を、forループの制御変数を使っ
てforループに於ける更新式312に書き改める。
今、元のwhileループ中にn個の更新式212が存
在するものとし、それらは、次のようなパターンになっ
ていることが、増分式判定部14で判明している。
First, the update expression 212 of the control variable in the original while loop is rewritten into an update expression 312 in the for loop using the control variable of the for loop.
Now, it is assumed that there are n update expressions 212 in the original while loop, and the incremental expression determination unit 14 has found that they have the following pattern.

【0040】更新式〔1〕: whileループの制御変数=whileループの制御
変数+ループ内不変式〔1〕 更新式〔2〕: whileループの制御変数=whileループの制御
変数+ループ内不変式〔2〕 : 更新式〔n〕: whileループの制御変数=whileループの制御
変数+ループ内不変式〔n〕
Update expression [1]: control variable of while loop = control variable of while loop + invariant expression in loop [1] Update expression [2]: control variable of while loop = control variable of while loop + invariant expression in loop [2]: Update expression [n]: control variable of while loop = control variable of while loop + invariant expression in loop [n]

【0041】これらの式は、forループの制御変数を
用いて次のように書き換えることができる。
These equations can be rewritten as follows using the control variables of the for loop.

【0042】更新式〔1〕: whileループの制御変数=forループの制御変数
+ループ内不変式〔1〕 更新式〔2〕: whileループの制御変数=forループの制御変数
+ループ内不変式〔1〕+ループ内不変式〔2〕 : 更新式〔n〕: whileループの制御変数=forループの制御変数
+ループ内不変式〔1〕+ループ内不変式〔2〕+…+
ループ内不変式〔n〕
Update expression [1]: control variable of while loop = control variable of for loop + invariant expression in loop [1] Update expression [2]: control variable of while loop = control variable of for loop + invariant expression in loop [1] + loop invariant [2]: update formula [n]: while loop control variable = for loop control variable + loop invariant [1] + loop invariant [2] +... +
Invariant in loop [n]

【0043】ここで、それぞれのループ内不変式は、制
御変数以外のループ内不変の変数や、定数同士の演算か
らなる式で、ループ内で常に一定の値をとる。そこで、
各増分式の、ループ内不変式のとる値を増分値とし、n
個の増分値の計算式314をそれぞれ、 増分値〔1〕=ループ内不変式〔1〕 増分値〔2〕=増分値〔1〕+ループ内不変式〔2〕 増分値〔3〕=増分値〔2〕+ループ内不変式〔3〕 : 増分値〔n〕=増分値〔n−1〕+ループ内不変式
〔n〕 とおいて、これらの式をforループの前で予め計算し
ておく。この増分値を使って更新式を書き直すことによ
り、forループ内に於ける、元のwhileループの
制御変数の更新式312が得られる。
Here, each invariant expression in the loop is an expression composed of invariable variables in the loop other than control variables and operations between constants, and always takes a constant value in the loop. Therefore,
The value taken by the invariable expression in the loop of each incremental expression is defined as an incremental value, and n
Increment value [1] = Invariant expression in loop [1] Increment value [2] = Increment value [1] + Invariant expression in loop [2] Increment value [3] = Increment Value [2] + Invariant expression in loop [3]: Increment value [n] = Increment value [n-1] + Invariant expression in loop [n], and these expressions are calculated in advance before the for loop. deep. By rewriting the update expression using the increment value, the update expression 312 of the control variable of the original while loop in the for loop can be obtained.

【0044】更新式〔1〕: whileループの制御変数=forループの制御変数
+増分値〔1〕 更新式〔2〕: whileループの制御変数=forループの制御変数
+増分値〔2〕 更新式〔3〕: whileループの制御変数=forループの制御変数
+増分値〔3〕 : 更新式〔n〕: whileループの制御変数=forループの制御変数
+増分値〔n〕
Update equation [1]: control variable of while loop = control variable of for loop + increment value [1] Update equation [2]: control variable of while loop = control variable of for loop + increment value [2] Update Formula [3]: control variable of while loop = control variable of for loop + increment value [3]: update formula [n]: control variable of while loop = control variable of for loop + increment value [n]

【0045】以上は、元のwhileループの制御変数
の更新式の変形である。次に、forループの制御変数
に対する増分式(第3式)3113であるが、これは、
増分値〔n〕を用いて下記(F)のように表される
The above is a modification of the update expression of the control variable of the original while loop. Next, the increment expression (third expression) 3113 for the control variable of the for loop is as follows.
It is expressed as the following (F) using the increment value [n].

【0046】 forループの制御変数=forの制御変数+増分値〔n〕 … (F)The control variable of the for loop = the control variable of for + the increment value [n] (F)

【0047】以上で、whileループ21は、for
ループ31,終値の計算式313,増分値の計算式31
4へと変換される。
As described above, while loop 21 is for
Loop 31, closing price calculation formula 313, increment value calculation formula 31
4 is converted.

【0048】次に、本発明の実施例について説明する。Next, an embodiment of the present invention will be described.

【0049】図1に於いて、ループ構造解析部11は、
読み込んだソースファイル2からwhileループの記
述を探し出す。図4はループ構造解析部11が探し出し
たwhileループ4の一例を示した図である。尚、w
hileループ以外の記述は、そのまま中間ファイル3
に書き出される。
In FIG. 1, the loop structure analysis unit 11
The description of the while loop is searched from the read source file 2. FIG. 4 is a diagram showing an example of the while loop 4 found by the loop structure analysis unit 11. Note that w
The description other than the file loop is stored in the intermediate file 3 as it is.
Is written out.

【0050】繰り返し条件判定部12は、ループ構造解
析部11が探し出した、図4に示すwhileループ4
中の繰り返し条件式41が、図2に示した繰り返し条件
式のパターンに合致するかどうかを試験する。この例の
繰り返し条件式41は、図2のパターンに合致してい
る。
The repetition condition determining unit 12 finds the while loop 4 shown in FIG.
It is tested whether or not the repetition conditional expression 41 in FIG. 2 matches the pattern of the repetition conditional expression shown in FIG. The repetition condition expression 41 of this example matches the pattern of FIG.

【0051】制御変数抽出部13は、繰り返し条件式4
1中に現れる変数の中から、制御変数となるものを探し
出す。この例の場合、繰り返し条件式41中に現れる変
数は、i,j,kの3つである。この内、ループの中で
更新されているものがただ1つであれば、その変数が制
御変数となる可能性がある。ここで、制御変数抽出部1
3は、変数iが唯一ループ内で更新されており、変数
j,kの更新は無いことから、変数iを制御変数として
抽出する。
The control variable extraction unit 13 calculates the repetition condition 4
From among the variables appearing in 1, search for a control variable. In the case of this example, the variables appearing in the repetition conditional expression 41 are i, j, and k. If only one of them is updated in the loop, the variable may be a control variable. Here, the control variable extraction unit 1
3 extracts the variable i as a control variable because the variable i is only updated in the loop and the variables j and k are not updated.

【0052】次に増分式判定部14に於いて、変数iの
更新式421,422,423が増分式であるかどうか
を試験する。これらの更新式は、図3に示す増分式のパ
ターンに合致してしなければならない。また、更新式中
に現れるループ内不変式は変数,定数同士の演算で構成
されるが、ループ内では常に一定の値とならねばならな
い。ループ内の3箇所に現れる更新式421,422,
423中には、i以外にもm,nの2つの変数が存在す
るが、これら2つの変数m,nは、ループ内部で更新さ
れることはなく、常に一定の値をとる。このため、3つ
の更新式421,422,423は、どれも図3の増分
式のパターンに合致しており、増分式である。
Next, the increment type determination unit 14 tests whether the update expressions 421, 422, and 423 of the variable i are increment types. These update expressions must conform to the incremental expression pattern shown in FIG. The invariant expression in the loop that appears in the update expression is composed of operations of variables and constants, but must always have a constant value in the loop. Update expressions 421, 422, appearing at three places in the loop
In 423, there are two variables m and n other than i, but these two variables m and n are not updated inside the loop and always take a constant value. Therefore, all three update expressions 421, 422, and 423 match the pattern of the incremental expression in FIG. 3, and are the incremental expressions.

【0053】ループ構造変換部15は、図4のwhil
eループ4を図5のforループ5,終値の計算式5
3,増分値の計算式541,542,543に変換す
る。forループ5には、whileループ4の制御変
数iとは異なったforループ用の制御変数を用いる。
ここでは、そのforループ用の制御変数をINDXと
する。forループ5に与える第1式511,第2式5
12,第3式513はそれぞれ次のように導かれる。
The loop structure conversion unit 15 is a part of the while structure shown in FIG.
e loop 4 is converted into for loop 5 in FIG.
(3) Conversion into increment formulas 541, 542, 543. In the for loop 5, a control variable for the for loop different from the control variable i of the while loop 4 is used.
Here, it is assumed that the control variable for the for loop is INDX. First formula 511 and second formula 5 given to for loop 5
The twelfth and third expressions 513 are respectively derived as follows.

【0054】第1式(初期化式)511:The first expression (initialization expression) 511:

【0055】forループの制御変数INDXを初期化
する式で、元のwhileループの入口に於ける変数i
の値を制御変数INDXに与える。従って、forルー
プの第1式511は、下記(G)に示すものとなる。
An expression for initializing the control variable INDX of the for loop, the variable i at the entry of the original while loop
Is given to the control variable INDX. Therefore, the first expression 511 of the for loop is as shown in the following (G).

【0056】INDX=i … (G)INDX = i (G)

【0057】第2式(繰り返し条件式)512:The second expression (repetition condition expression) 512:

【0058】図4のwhileループ4の繰り返し条件
式41は、 3+k>j+i であり、制御変数iを繰り返し条件式の左辺に移項し、
それ以外のループ内で一定の値をとる変数,定数を右辺
に集めると、 i<3+k−j となる。ここで、この繰り返し条件式の右辺の3+k−
jは、ループ内で不変式であるから、ループの外に追い
出すことができる。そこで、終値をTERMとすると、
終値の計算式53は、 TERM=3+k−j となる。この式をforループに入る直前で計算してお
く。更に、このTERMを使って、繰り返し条件式を、 i<TERM とし、このwhileループの制御変数iをforルー
プの制御変数INDXで置き換えると、 INDX<TERM が得られる。これが、forループ5の第2式512と
なる。
The repetitive conditional expression 41 of the while loop 4 in FIG. 4 is 3 + k> j + i, and the control variable i is shifted to the left side of the repetitive conditional expression.
When variables and constants having constant values in other loops are collected on the right side, i <3 + k−j. Here, 3 + k−
Since j is invariant in the loop, it can be driven out of the loop. Therefore, if the closing price is TERM,
The closing price calculation formula 53 is TERM = 3 + k−j. This equation is calculated immediately before entering the for loop. Further, using this TERM, the repetition conditional expression is set as i <TERM, and the control variable i of the while loop is replaced with the control variable INDX of the for loop, so that INDX <TERM is obtained. This is the second expression 512 of the for loop 5.

【0059】第3式(増分式)513:The third expression (incremental expression) 513:

【0060】先ず、元のwhileループ4の制御変数
の更新式421,422,423を、forループの制
御変数INDXを用いて書き直す。
First, the update expressions 421, 422, and 423 of the control variables of the original while loop 4 are rewritten using the control variables INDX of the for loop.

【0061】元のwhileループ4には、実行される
順に、 更新式〔1〕… i=i+n+1 …(421) 更新式〔2〕… i=i+m …(422) 更新式〔3〕… i=i+1 …(423) の3つの更新式421,422,423が存在する。こ
れらをforループの制御変数INDXを使って書き直
すと、下記のようになる。
In the original while loop 4, in the order of execution, the update equation [1]... I = i + n + 1 (421) The update equation [2]... I = i + m (422) The update equation [3]. There are three update expressions 421, 422, 423 of i + 1... (423). When these are rewritten using the control variable INDX of the for loop, the following is obtained.

【0062】更新式〔1〕… i=INDX+n+1 更新式〔2〕… i=INDX+n+1+m 更新式〔3〕… i=INDX+n+1+m+1Update equation [1] i = INDX + n + 1 Update equation [2] i = INDX + n + 1 + m Update equation [3] i = INDX + n + 1 + m + 1

【0063】ここで、それぞれの増分式のループ内不変
式を増分値としてまとめる。増分値をINCR1,IN
CR2,INCR3とすると、 増分値〔1〕… INCR1=n+1 …(541) 増分値〔2〕… INCR2=INCR1+m …(542) 増分値〔3〕… INCR3=INCR2+1 …(543) となる。これらの式541,542,543は、for
ループの直前で計算しておく。
Here, the invariable expressions in the loop of each incremental expression are summarized as an incremental value. INCR1, IN
Assuming CR2 and INCR3, the increment value [1]... INCR1 = n + 1 (541) The increment value [2]... INCR2 = INCR1 + m (542) The increment value [3]... INCR3 = INCR2 + 1 (543) These equations 541, 542, 543 are for
Calculate just before the loop.

【0064】これらの増分値を使って更新式を書き直す
と、 更新式〔1〕… i=INDX+INCR1 …(521) 更新式〔2〕… i=INDX+INCR2 …(522) 更新式〔3〕… i=INDX+INCR3 …(523) が得られる。これらの更新式が、forループ5に於け
る、元のwhileループの制御変数iの更新式52
1,522,523となる。
When the update formula is rewritten using these increment values, the update formula [1]... I = INDX + INCR1 (521) The update formula [2]... I = INDX + INCR2 (522) The update formula [3]. INDX + INCR3 (523) is obtained. These update expressions are the update expressions 52 of the control variable i of the original while loop in the for loop 5.
1,522,523.

【0065】次に、forループ5の第3式(増分式)
であるが、その増分値は、増分値INCR3を用いて、 INDX=INDX+INCR3 …(513) となる。以上で、図4のwhileループ4は、図5の
forループ5へと変換される。
Next, the third expression of the for loop 5 (incremental expression)
Where the increment value is: INDX = INDX + INCR3 (513) using the increment value INCR3. As described above, the while loop 4 in FIG. 4 is converted into the for loop 5 in FIG.

【0066】この変換されたループを含む中間ファイル
3を既存のベクトル化,或いは並列化コンパイラに与え
ることによって、ループのベクトル化或いは並列化が可
能になる。
By providing the intermediate file 3 including the converted loop to an existing vectorizing or parallelizing compiler, the loop can be vectorized or parallelized.

【0067】[0067]

【発明の効果】以上説明したように、本発明によれば、
次のような効果がある。
As described above, according to the present invention,
The following effects are obtained.

【0068】第1の効果は、繰り返し数を求めることが
困難であったwhileループをベクトル化等の並列化
の対象にすることができることである。その理由は、f
orループの繰り返し条件式に相当する式しか持たない
whileループを、初期化式,繰り返し条件式,増分
式を含み、従来の技術で繰り返し数を求めることができ
るforループに変換するループ構造変換部を備えてい
るからである。
The first effect is that the while loop for which it was difficult to obtain the number of repetitions can be subjected to parallelization such as vectorization. The reason is f
A loop structure conversion unit that converts a while loop having only an expression corresponding to an or-loop repetition conditional expression into a for loop including an initialization expression, a repetition conditional expression, and an increment expression and capable of obtaining the number of repetitions by a conventional technique. Is provided.

【0069】第2の効果は、ループ内の複数箇所に制御
変数を更新する更新式が組み込まれているwhileル
ープであっても、ベクトル化等の並列化の対象にするこ
とができることである。その理由は、forループの増
分式を、whileループ中に制御変数に対する更新式
が複数含まれている場合は、上記複数の更新式それぞれ
に於ける、制御変数を増加或いは減少させる値の合計値
だけforループの制御変数を増加或いは減少させる式
としたからである。
A second effect is that even a while loop in which an update expression for updating a control variable is incorporated at a plurality of positions in the loop can be subjected to parallelization such as vectorization. The reason is that the for loop
An update expression for a control variable during a while loop
Is included, each of the above update formulas
Sum of the values that increase or decrease the control variable in
Expression to increase or decrease the control variable of the for loop only
Because it was.

【0070】第3の効果は、仮に変換対象となるwhi
leループが、その実行文中にベクトル化等の並列化に
不向きな実行文を含むものであり、forループに変換
しても上記実行文のためにベクトル化等が不可能であ
り、スカラでしか実行できないものであったとしても、
元のwhileループのままスラカで実行するより高速
に実行されることである。その理由は、元のwhile
ループに於けるループ内不変式をforループの直前に
組み込むようにしており、forループ中の繰り返し条
件式や増分式が、元のwhileループより簡潔なもの
になるためであり、たとえ、forループをスカラによ
り実行しなくてはならない場合であっても元のwhil
eループをスラカにより実行する場合よりも高速にな
る。
The third effect is that while is temporarily converted to
The le loop contains an executable statement that is not suitable for parallelization such as vectorization in its executable statement. Even if it is converted into a for loop, vectorization or the like cannot be performed because of the above-mentioned executable statement. Even if it ca n’t be done,
This is to be executed at a higher speed than executing the original while loop with slurs. The reason is that the original while
The invariant expression in the loop in the loop is incorporated immediately before the for loop, so that the repetition conditional expression and the increment expression in the for loop become simpler than the original while loop, and for example, Must be executed by a scalar even if the original while
It is faster than executing the e-loop with slurs.

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

【図1】本発明の実施例のブロック図である。FIG. 1 is a block diagram of an embodiment of the present invention.

【図2】繰り返し条件式のパターンを示す図である。FIG. 2 is a diagram showing a pattern of a repetition conditional expression.

【図3】増分式のパターンを示す図である。FIG. 3 is a diagram showing an incremental pattern.

【図4】whileループの一例を示す図である。FIG. 4 is a diagram illustrating an example of a while loop.

【図5】変換後のforループの一例を示す図である。FIG. 5 is a diagram illustrating an example of a for loop after conversion.

【符号の説明】[Explanation of symbols]

1…ループ構造変換装置 11…ループ構造解析部 12…繰り返し条件判定部 13…制御変数抽出部 14…増分式判定部 15…ループ構造変換部 2…ソースファイル 21…whileループ 211…繰り返し条件式 212…更新式 3…中間ファイル 31…forループ 3111…第1式(初期化式) 3112…第2式(繰り返し条件式) 3113…第3式(増分式) 312…更新式 313…終値の計算式 314…増分値の計算式 4…whileループ 41…繰り返し条件式 421,422,423…更新式 5…forループ 511…第1式(初期化式) 512…第2式(繰り返し条件式) 513…第3式(増分式) 521,522,523…更新式 53…終値の計算式 541,542,543…終値の計算式 DESCRIPTION OF SYMBOLS 1 ... Loop structure conversion apparatus 11 ... Loop structure analysis part 12 ... Repetition condition judgment part 13 ... Control variable extraction part 14 ... Incremental expression judgment part 15 ... Loop structure conversion part 2 .... Source file 21 ... while loop 211 ... Repetition condition expression 212 ... Update formula 3 ... Intermediate file 31 ... For loop 3111 ... First formula (Initial formula) 3112 ... Second formula (Repeat condition formula) 3113 ... Third formula (Increment formula) 312 ... Update formula 313 ... Final formula 314 ... calculation formula of increment value 4 ... while loop 41 ... repetition condition formula 421,422,423 ... update formula 5 ... for loop 511 ... first formula (initialization formula) 512 ... second formula (repetition condition formula) 513 ... Third formula (incremental formula) 521, 522, 523 ... update formula 53 ... calculation formula of closing price 541, 542, 543 ... calculation formula of closing price

フロントページの続き (56)参考文献 特開 平7−141328(JP,A) 特開 平5−303499(JP,A) 特開 平5−189244(JP,A) 特開 平4−215132(JP,A) R.Allen他,”Compili ng C for Vectoriza tion,Parallelizati on,and Inline Expa nsion”,ACM SIGPLAN Notices,1988,Vol.23, No.7,p241−249 情報処理学会第45回(平成4年後期) 全国大会講演論文集,p.5−51〜5− 52 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 Continuation of the front page (56) References JP-A-7-141328 (JP, A) JP-A-5-303499 (JP, A) JP-A-5-189244 (JP, A) JP-A-4-215132 (JP) A). Allen et al., "Compiling C for Vectorization, Parallelization, and Inline Expansion", ACM SIGPLAN Notices, 1988, Vol. 23, No. 7, pp. 241-249 Proc. Of the IPSJ 45th Annual Conference, late 1991, p. 5-51 to 5-52 (58) Field surveyed (Int. Cl. 7 , DB name) G06F 9/45

Claims (3)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 ソースファイルからwhileループを
抽出するループ構造解析部と、 該ループ構造解析部が抽出したwhileループを、初
期化式と繰り返し条件式と増分式と前記whileルー
プ中の制御変数に対する更新式と対応する更新式とを含
むforループであって、前記初期化式として前記wh
ileループの制御変数がループに入る直前に保持して
いた値を、前記whileループの制御変数とは異なる
前記forループの制御変数の初期値にする式を含み、
前記繰り返し条件式として前記forループの制御変数
が前記whileループの繰り返し条件式によって定ま
る終値に達したか否かを判定する式を含み、前記増分式
として前記whileループ中に制御変数に対する更新
式が複数含まれている場合は、該複数の更新式それぞれ
に於ける、制御変数を増加或いは減少させる値の合計値
だけ前記forループの制御変数を増加或いは減少させ
る式を含み、前記whileループ中の制御変数に対す
る更新式と対応する更新式として前記whileループ
の制御変数を前記forループの制御変数のインダクシ
ョン変数とする式を含むforループに変換するループ
構造変換部とを備えたことを特徴とするwhileルー
プ構造変換装置。
A loop structure analysis unit for extracting a while loop from a source file; and a while loop extracted by the loop structure analysis unit for an initialization expression, a repetition condition expression, an increment expression, and a control variable in the while loop. A for loop including an update expression and a corresponding update expression, wherein the wh
an expression for setting a value held immediately before the control variable of the ile loop enters the loop to an initial value of the control variable of the for loop different from the control variable of the while loop;
The repetition conditional expression includes an expression for determining whether the control variable of the for loop has reached a final value determined by the repetition conditional expression of the while loop , and the control variable is updated during the while loop as the increment expression.
If multiple expressions are included, each of the multiple update expressions
Sum of the values that increase or decrease the control variable in
And a control variable of the while loop is defined as an induction variable of the control variable of the for loop including an expression for increasing or decreasing the control variable of the for loop as an update formula corresponding to the control variable of the while loop. And a loop structure conversion unit for converting into a for loop including an expression.
【請求項2】 前記ループ構造変換部は、前記whil
eループ中のループ内不変式を前記forループの直前
に組み込む構成を備えたことを特徴とする請求項1記載
のwhileループ構造変換装置。
2. The method according to claim 1, wherein the loop structure conversion unit includes
2. The while loop structure conversion device according to claim 1, further comprising a configuration in which an invariant in a loop in the e loop is incorporated immediately before the for loop.
【請求項3】 前記ループ構造解析部が抽出したwhi
leループ中の繰り返し条件式に比較条件子が含まれて
いるか否かを判定する繰り返し条件判定部と、 該繰り返し条件判定部で比較条件子が含まれていると判
定された繰り返し条件式から前記whileループ制御
変数を抽出する制御変数抽出部と、 該制御変数抽出部が抽出したwhileループの制御変
数に対する全ての更新式が増分式のパターンに合致する
か否かを判定する増分式判定部とを備え、 前記ループ構造変換部は、前記増分式判定部で全ての更
新式が増分式のパターンに合致すると判定されたwhi
leループのみを処理対象にする構成を備えたことを特
徴とする請求項2記載のwhileループ構造変換装
置。
3. The whi extracted by the loop structure analysis unit.
a repetition condition determining unit that determines whether or not a comparison condition is included in a repetition condition expression in the le loop; and the repetition condition expression that is determined by the repetition condition determination unit to include the comparison condition is a control variable extracting unit for extracting a while loop control variable; and an incremental expression determining unit for determining whether all update expressions for the while loop control variable extracted by the control variable extracting unit match the pattern of the incremental expression. Wherein the loop structure conversion unit is configured to determine whether all of the update expressions match the incremental expression pattern in the incremental expression determination unit.
3. The while loop structure conversion device according to claim 2, further comprising a configuration for processing only the le loop.
JP11121796A 1996-04-08 1996-04-08 while loop structure conversion device Expired - Fee Related JP3235462B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11121796A JP3235462B2 (en) 1996-04-08 1996-04-08 while loop structure conversion device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11121796A JP3235462B2 (en) 1996-04-08 1996-04-08 while loop structure conversion device

Publications (2)

Publication Number Publication Date
JPH09282171A JPH09282171A (en) 1997-10-31
JP3235462B2 true JP3235462B2 (en) 2001-12-04

Family

ID=14555503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11121796A Expired - Fee Related JP3235462B2 (en) 1996-04-08 1996-04-08 while loop structure conversion device

Country Status (1)

Country Link
JP (1) JP3235462B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5038760B2 (en) * 2007-03-28 2012-10-03 株式会社東芝 Source code conversion apparatus and source code conversion method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
R.Allen他,"Compiling C for Vectorization,Parallelization,and Inline Expansion",ACM SIGPLAN Notices,1988,Vol.23,No.7,p241−249
情報処理学会第45回(平成4年後期)全国大会講演論文集,p.5−51〜5−52

Also Published As

Publication number Publication date
JPH09282171A (en) 1997-10-31

Similar Documents

Publication Publication Date Title
EP0533813B1 (en) Method for representing scalar data dependencies for an optimizing compiler
US4773007A (en) Complier code optimization method for a source program having a first and second array definition and use statements in a loop
EP0669574A2 (en) Program transformation processing system and method
US5109331A (en) Compiling a source program by analyzing a subscript of an array included in a loop processing of a computer
JPH0814817B2 (en) Automatic vectorization method
US20040117781A1 (en) Detection of reduction variables in an assignment statement
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
US5790859A (en) Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler
CN112948828A (en) Binary program malicious code detection method, terminal device and storage medium
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
US6282704B1 (en) Method for analyzing array summary for loop including loop exit statement
JP3235462B2 (en) while loop structure conversion device
CN114969446B (en) Grouping hybrid precision configuration scheme searching method based on sensitivity model
Arutunian et al. A Method to Evaluate Binary Code Comparison Tools
US9274929B2 (en) Constraint derivation in context following for use with object code insertion
JP3032030B2 (en) Loop optimization method and apparatus
JP3028821B2 (en) Parallel compilation method
EP0423597A2 (en) Cross iteration common sub-expression elimination
JP3311774B2 (en) Compiler unit
JP2801193B2 (en) Vectorization processing device for induction variables
US20020038452A1 (en) Constant bit folding and propagation
JPS6367676A (en) Processing system for vector formation from general loop
JP3047418B2 (en) Vectorization processing method
JPH0748205B2 (en) Vectorization processing method
JPH0962515A (en) Loop structure transforming device and compiler using the same

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080928

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080928

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090928

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090928

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100928

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110928

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees