Skip to main content

IAR Embedded Workbench for Arm 9.70.x

optimize

このセクションの内容:
構文
#pragma optimize=[goal] [level] [vectorize] [disable]
パラメータ

goal

以下から選択します。

size(サイズを重視して最適化)

バランス(速度とサイズのバランスを最適化)

speed(速度を重視して最適化)

no_size_constraints(速度を重視して最適化するが、コードサイズ拡張の通常の制限を緩和)

level

最適化レベルをnonelowmedium、またはhighから指定します。

vectorize

NEONベクタ命令の生成を有効にします。

disable

1つまたは複数の最適化を無効にします。以下から選択:

no_code_motion(コード移動を無効化)

no_cse(共通部分式除去を無効化)

no_inline(関数のインライン化を無効化)

no_relaxed_fp(浮動小数点の式をより積極的に最適化する言語緩和を無効化)

no_static_to_auto_conversion(staticからautoへの変換を無効化)

no_tbaa(型ベースエイリアス解析を無効化)

no_scheduling、(命令スケジューリングを無効化)

no_vectorize(NEON ベクタ命令の生成を無効化)

no_unroll(ループ展開を無効化)

表103 #pragma optimizeへのパラメータ


説明

このプラグマディレクティブは、最適化レベルを下げる場合や、特定の最適化を無効化する場合に使用します。このプラグマディレクティブは、ディレクティブ直後の関数にのみ影響します。

パラメータsizebalancedspeedno_size_constraintsは、最適化レベル[]でのみ効果があり、速度とサイズを同時に最適化することはできないため、これらのどれか1つだけを使用できます。また、このプラグマディレクティブにプリプロセッサマクロを埋め込むことはできません。埋め込まれたマクロは、プリプロセッサでは展開されません。

注記

#pragma optimizeディレクティブを使用して指定した最適化レベルが、コンパイラオプションを使用して指定した最適化レベルよりも高い場合、このプラグマディレクティブは無視されます。

#pragma optimize=speed
int SmallAndUsedOften()
{
  /* Do something here. */
}

#pragma optimize=size
int BigAndSeldomUsed()
{
  /* Do something here. */
}
関連項目

変換の微調整.