gccの最適化オプション続きです。
-O0や-Osも使ってみます。また、-Oを複数指定したときの比較もしてみます。
ソースはいつもの。
takk@deb9:~/tmp$ cat -n t.c 1 int b; 2 static void func1(void) 3 { 4 b = b + 50; 5 } 6 7 int main() 8 { 9 int a=10; 10 if(a == 10) 11 b = 100; 12 else 13 b = 200; 14 15 func1(); 16 17 return b; 18 } takk@deb9:~/tmp$
-O0(オーゼロ)は、最適化オプションなしと同じです。
takk@deb9:~/tmp$ gcc -o t.s -S t.c takk@deb9:~/tmp$ gcc -o t-O0.s -O0 -S t.c takk@deb9:~/tmp$ diff t.s t-O0.s takk@deb9:~/tmp$
-Osは、-O2と同じみたいです。
takk@deb9:~/tmp$ gcc -o t-O2.s -O2 -S t.c takk@deb9:~/tmp$ gcc -o t-Os.s -Os -S t.c takk@deb9:~/tmp$ diff t-O2.s t-Os.s 3d2 < .p2align 4,,15 takk@deb9:~/tmp$
複数-Oオプションをつけた場合は、一番後ろに指定したオプションが有効です。
-O0が最後の場合
takk@deb9:~/tmp$ gcc -o t-lot.s -S -O2 -O3 -O1 -O0 t.c takk@deb9:~/tmp$ diff t-lot.s t.s takk@deb9:~/tmp$
-O2が最後の場合
takk@deb9:~/tmp$ gcc -o t-lot.s -S -O0 -O3 -O1 -O2 t.c takk@deb9:~/tmp$ diff t-lot.s t-O2.s takk@deb9:~/tmp$
コメント