Renesas Synergy™

FAQ 1011376 : -Xaliasオプションについて教えてください。

Q: 質問

-Xaliasオプションについて教えてください。


A: 回答

-Xalias=ansiオプションを指定した場合、ANSI規格に基づくポインタ指示先の型を考慮した最適化を行います。ANSI規格では、ポインタの指先の型が異なる場合、異なるオブジェクトを指しているとして良いとされています。
そのため、ANSI規格に沿う記述である場合、-Xalias=ansiオプションを指定すると、異なる型のポインタ先のオブジェクトは異なると認識した最適化を行います。これによってコード効率が向上が期待できます。

例:

   ----------------------------
   long a,b;
   void func(short *p) {
      a=0;
      *p=1;
      b=a;
   }
   ----------------------------

"p"はshort型を指すポインタであるため、-Xalias=ansiオプションを指定した場合、*pとa,bは別メモリ領域であると認識しま す。この場合、「*p=1;」によって「a=0;」が上書きされることは無いため、「b=a;」は「b=0;」と最適化出来ます。これによりコード効率が 向上します。

一方、-Xalias=noansiの場合、「*p=1;」によって「a=0;」が上書きされる可能性を考慮し、「b=a;」では、"a"の値をロードして"b"にストアします。
そのため、ポインタ"p"が変数"a"のアドレスを指しているのであれば、-Xalias=ansiと-Xalias=noansiオプションでは実行結果が異なります。

適用製品

RH850ファミリ用Cコンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください