Restriction That Applies to Operation of the Linkage Editor When the -merge_files Option of the Compiler Has been Used |
When an object module file created by the compiler with the -merge_files option specified is to be linked, correct operation is not guaranteed if the -delete, -rename, or -replace option is specified.
In this version of this compiler, if statements where the conditional expression has a constant value and statements that will accordingly never be executed are not reflected in the output code whether or not optimize=0 is specified.
In the examples below, lines marked [Deleted] are not reflected at the time of code generation.
int a,b,c; void func01(void) { if (1+2) { /* [Deleted] */ /* Executed */ a = b; } else { /* Never executed */ a++; /* [Deleted] */ b = c; /* [Deleted] */ } } |
Constant expressions that include symbolic addresses are also treated as constant expressions. |
void f1(void),f2(void); void func02(void) { if (f1==0) { /* [Deleted] */ /* Never executed */ f2(); /* [Deleted] */ } else { /* Executed */ f1(); } } |
There are the following differences in the assembly source code to be output by this version of this compiler when -show=source is specified.