KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q43998: QuickC Internal Compiler Error: gencode.c, line 389

Article: Q43998
Product(s): See article
Version(s): 2.00
Operating System(s): MS-DOS
Keyword(s): ENDUSER | buglist2.00 | mspl13_c
Last Modified: 31-MAY-1989

Compiling the program below causes the Microsoft QuickC 2.00 compiler
to produce the following error message, regardless of memory model or
optimization level:

   bile.c(7) : fatal error C1001: Internal Compiler Error
           (compiler file 'gencode.c', line 389)
           Contact Microsoft Technical Support

The program is as follows:

    /* bile.c -- causes ICE, gencode.c, line 389
     */
    char Image;

    void main()
    {
        Image = (char huge *)1;
    }

The compiler will correctly generate a warning about the different
levels of indirection on the same line as the one causing the ICE. The
problem can be eliminated by properly declaring Image. Image should be
declared as follows:

   char huge *Image;

This mistake can be made easily if Image is the second of two
variables in a declaration, as follows:

   char huge *foo, Image;

This is a declaration of one huge pointer to character and one
character variable, not two huge pointers to character. The
declaration of two huge pointers to character is as follows:

   char huge *foo,
        huge *Image;

Microsoft has confirmed this to be a problem in Version 2.00 We are
researching this problem and will post new information as it becomes
available.

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.