C1001: Internal Compiler Error: newcode.c, Line 604

ID Number: Q64030

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

The Microsoft C Compiler version 6.0 produces the following internal

compiler error when the sample program below is compiled for large

(/AL) or compact (/AC) memory model with any optimizations except /Od,

/Oa, or /Ow:

file.c(24) : fatal error C1001: Internal Compiler Error

(compiler file '@(#)newcode.c:1.87', line 604)

Contact Microsoft Product Support Services

If the code is compiled with /Oa or /Ow, C 6.0 generates the following

error message:

file.c(24) : fatal error C1001: Internal Compiler Error

(compiler file '@(#)regMD.c:1.100', line 1017)

Contact Microsoft Product Support Services

Since these errors occur if any optimization is turned on, compiling

with the /Od optimization switch or using the new optimize pragma to

turn off all optimizations is the easiest solution.

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

problem was corrected in C version 6.0a.

Sample Code

-----------

/* Compile options needed: /AL /Oe

*/

#include <ctype.h>

#define OFFSET 2

#define NEXTFP(nextfp,fp) \

nextfp = (long) fp & 0xffff0000;\

nextfp = nextfp + * fp + *(fp+1) * 0x100;

static unsigned char * stk_bottom;

static long first_fp;

void main (void) {}

void chkstkinit()

{

unsigned char stk_top;

static long nextfp;

static unsigned char *fp;

stk_top = 0xaa;

fp = &stk_top + OFFSET;

NEXTFP(nextfp, fp);

stk_bottom = (unsigned char *)nextfp; // Error on This line

first_fp = *stk_bottom + *(stk_bottom +1) * 0x100;

return;

}