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文は、条件判定および実行されることのない側の文を、コード生成時に削除します。
以下に例を示します。
コメントに[削除]と書かれている行が、コード生成時に削除されます。
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();
}
}
|
本バージョンでは、-show=source指定時にアセンブリソースに出力される内容のうち、次の項目が変更されています。
- | -debugオプションがない場合、.LINEは表示されません。 |
- | #line指定に続くソース行は、命令との対応が正しくない場合があります。 |