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$


コメント