11.4.2 V2.00以降【V.1.00〜V.1.02との互換性】

(1)

コンパイラで -merge_files オプションを指定した場合のリンカの制限事項

コンパイラで -merge_files オプションを指定して生成したオブジェクト・モジュール・ファイルをリンクする場合、リンカオプション -delete、-rename または-replace を同時に指定した場合の動作は保証しません。

(2)

optimize=0指定時のif文に対する生成コードに関する注意事項

本バージョンでは、コンパイル時に、optimize=0の指定の有無にかかわらず、定数だけの式からなる条件式を持つif文は、条件判定および実行されることのない側の文を、コード生成時に削除します。

以下に例を示します。

コメントに[削除]と書かれている行が、コード生成時に削除されます。

例 1.

定数のみの式の場合

int a,b,c;
void func01(void)
{
    if (1+2) {   /* [削除] */
        /* 実行される */
        a = b;
    } else {
        /* 実行されることがない */
        a++;     /* [削除] */
        b = c;   /* [削除] */
    }
}

例 2.

シンボルアドレスを含む定数式も、定数式に含みます。

void f1(void),f2(void);
void func02(void)
{
    if (f1==0) {  /* [削除] */
        /* 実行されることがない */
        f2();     /* [削除] */
    } else {
        /* 実行される */
        f1();
    }
}

(3)

-show=sourceの出力内容の変更

本バージョンでは、-show=source指定時にアセンブリソースに出力される内容のうち、次の項目が変更されています。

-

-debugオプションがない場合、.LINEは表示されません。

-

#includeの内容が展開されません。

-

#line指定に続くソース行は、命令との対応が正しくない場合があります。