11.4.2 V.2.00 and Later Versions (Compatibility with Versions between 1.00 and 1.02)

(1)

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.

(2)

Note on Generation of Code That Corresponds to if Statements When optimize=0

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.

Examples 1.

Expression that produces a constant value

int a,b,c;
void func01(void)
{
    if (1+2) {   /* [Deleted] */
        /* Executed */
        a = b;
    } else {
        /* Never executed */
        a++;     /* [Deleted] */
        b = c;   /* [Deleted] */
    }
}

 

Examples 2.

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();
    }
}

 

(3)

Differences in Assembly Source Code Output by -show=source

There are the following differences in the assembly source code to be output by this version of this compiler when -show=source is specified.

-

.LINE is not displayed unless -debug has been specified.

-

#include statements are not expanded.

-

The instruction that corresponds to source code that follows #line may be incorrect.