C9106000: C1001: emit.c, Line 437

ID Number: Q72696

6.00a 6.00ax | 6.00a

MS-DOS | OS/2

buglist6.00a buglist6.00ax fixlist7.00

Summary:

SYMPTOMS

The Microsoft C Compiler versions 6.0a and 6.0ax produce the

following internal compiler error when the sample program below is

compiled with any optimization, any memory model that uses /Aw or

/Au, and /FPc, FPc87, or /FPa:

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

(compiler file '@(#)emit.c:1.115', line 437)

Contact Microsoft Product Support Services

Note: Some options such as /ML, /MT, and /MD imply the /Aw switch

without explicitly stating it.

RESOLUTION

There are several ways to work around this problem:

1. Break the complex expression into smaller subexpressions by

using temporary variables. This is the easiest solution in the

sample code below.

-or-

2. Use a memory model where SS == DS.

-or-

3. Compile with the /qc (quick compile) option.

STATUS

Microsoft has confirmed this to be a problem in C versions 6.0a and

6.0ax. We are researching this problem and will post new

information here as it becomes available.

More Information:

Sample Code

-----------

/* Compile options needed: /ALw /FPc /c

*/

double func(double);

void main(double *client)

{

register int i;

double rslt;

double monthly[3];

double monthly_charges[3];

rslt = 0.0;

/* To work around the problem, simplify the following line. */

monthly[i] = func( monthly[i] * 100000.0) / 100000.0;

rslt += (monthly[i] * 12 * *client);

rslt += (monthly_charges[i] * 12);

}

Additional reference words: 6.00 6.00a 6.00ax