Skip to main content

IAR Embedded Workbench for Arm 9.70.x

unroll

このセクションの内容:
構文
#pragma unroll=n
パラメータ

n

展開されたループ内にあるループ本体の数で、定数の整数。#pragma unroll = 1 によって、ループ展開を回避します。

説明

このプラグマディレクティブを使用して、ディレクティブのすぐ後ろにあるループを展開し、展開されたループにnのループ本体があるように指示します。このプラグマディレクティブは、fordowhileの各ループの直前にのみ配置でき、繰り返し回数はコンパイル時に決定できます。

展開は通常、比較的小さいループで最も効果的です。ただし、より大きなループを展開すると有効な場合もあります。これはたとえば、共通部分式除去や不要なコードの除去など、展開されていないループの繰り返しの間にさらなる最適化の機会がある場合などです。

#pragma unrollディレクティブを使用して、展開のヒューリスティックがあまり効果的でない場合に、ループを強制的に展開することができます。このプラグマディレクティブはまた、積極的なヒューリスティックの展開を抑える場合にも使用できます。

#pragma unroll=4
for (i = 0; i < 64; ++i)
{
  foo(i * k, (i + 1) * k);
}
関連項目

ループ展開