FIX: C4713: Internal Compiler Error, reg86.c, Line 2934

Q113259

1.00 WINDOWS kbtool kbfixlist kbbuglist
The information in this article applies to:


SYMPTOMS

The compiler generates the following internal compiler error message when the sample program below is compiled with /Oe or /Ox:

warning C4713: func: internal compiler error; restarting (compiler file '@(#)reg86.c:1.26', line 2934)
The internal compiler error is triggered by using the global register allocation optimization (/Oe). Note that global register allocation is included with the /Ox compiler option.


RESOLUTION

The C4713 message is just a warning. The compiler realizes a problem has occurred due to the global register allocation optimization and restarts the compile without the optimization.

There are two ways to eliminate this warning message:


STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed above. This problem was corrected in Visual C++ version 1.5.

Sample Code




/* Compile options needed: /c /f- /Oe
*/ 

#include <ctype.h>

typedef struct _table
    {
    char * pcItem1;
    char * pcItem2;
    char * pcItem3;
    int nItem4;
    } * PTABLE;

static int nStatic;

// Uncomment for workaround:
// #pragma optimize ("e", off)

int func (PTABLE ptParam)
{
    for (;;)
    {
     if (nStatic == '/')
     {
         ptParam->nItem4 = 2;
         ptParam->pcItem3 = ptParam->pcItem2;
         return 7;
     }

     if (nStatic == '\\')
     {
         nStatic = (++(ptParam->pcItem2) < ptParam->pcItem1
          ? *ptParam->pcItem2
          : -1);
     }
    }
}

// Uncomment for workaround:
// #pragma optimize ("", on)
 

Additional query words: 8.00 1.00

Keywords : kb16bitonly kbCompiler
Issue type : kbbug
Technology : kbVCsearch kbAudDeveloper kbCVCComp


Last Reviewed: February 26, 2001
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.