Article: Q62072
Product(s): See article
Version(s): 6.00 | 6.00
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 | mspl13_c
Last Modified: 15-AUG-1990
The sample program show below, when compiled for compact or large
memory model, produces the following error under default
optimizations:
fatal error C1001: Internal Compiler Error
(compiler file '@(#)regMD.c:1.100', line 4634)
Contact Microsoft Product Support Services
Sample Program
--------------
#include<stdio.h>
typedef struct window
{
int *fld;
int f_cursor, l_cursor;
} WINDOW;
void test(int,int);
void foo(WINDOW *w)
{
test(w->fld[w->f_cursor],w->fld[w->f_cursor+1]-w->fld[w->f_cursor]);
}
Microsoft has confirmed this to be a problem with Microsoft C version
6.00. We are researching this problem and will post new information
here as it becomes available.
The following are several possible workarounds:
1. Enable global register allocation during compilation (/Oe).
2. Disable optimizations globally (/Od).
3. Disable optimizations locally with #pragma("",off).
4. Simplify the function call through the use of temporary variables.