PRC9110002: C 6.0ax Generating CL1319 with /Oe /EM in PASS 2

ID Number: Q76952

6.00ax

MS-DOS

buglist6.00ax fixlist7.00

Summary:

PROBLEM ID: C9110002

SYMPTOMS

Very large functions compiled with /Oe and /EM may cause the

Microsoft C Compiler version 6.0ax to generate a CL1319 error and

terminate, or may cause the compiler to enter an infinite loop,

which prints CL1319 errors to the screen.

If the compiler can't globally optimize a function, the following

error messages may be produced:

C4203: function too large for global optimization

CL1319: Error: Internal error - unrecoverable fault

RESOLUTION

The following are valid workarounds:

1. Do not specify /Oe (enable global register allocation) when

compiling.

-or-

2. Disable the global register allocation optimization with the

#pragma optimize directive for the function that cannot be

optimized. For example:

#pragma optimize("e",off)

void too_big(void)

{

/* ... */

}

#pragma optimize("e",on)

STATUS

Microsoft has confirmed this to be a problem in C version 6.0ax. This

problem was corrected in C/C++ version 7.0.

Additional reference words: 6.00ax