gcc最適化(O/O1/O2/O3/Os/O0)複数指定

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$

コメント

タイトルとURLをコピーしました