- 963 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 11:05:30 ]
- gccのループ展開の抑制について質問させてください。
コードサイズの評価をしようとして、常用している -O3 に ループ展開の抑制だけを加えて -O3 -fno-unroll-loops -fno-peel-loops と したんですが、ループ展開を止めてくれません。どうやればいいんでしょう? gccのバージョンは4.1.2(tarballから展開・パッチなし)、 実行環境はi686-pc-linux-gnuとpowerpc-linuxです(どちらでも現象は同じ)。 問題のコードを直接晒せないので、再現コードを書きます: #define N 5 int foo(int a[]) { int t = 0, i; for (i = 0; i < N; i++) t += a[i]; return t; } 上のように定数回の小ループがあって、ループ回数が少ないと展開するようです。 展開した場合は、ループ構造は削除され、中身が回数分反復されます。 -O2 とすればループ展開を行わなくなります。 でも、ループ展開以外の最適化は -O3 のままにしておきたいんです。
|

|