Q68907: Incorrect Code Generated for "FILD QWord Ptr"

Article: Q68907
Product(s): See article
Version(s): 6.00 6.00a | 6.00 6.00a
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 buglist6.00a | mspl13_c
Last Modified: 1-FEB-1991

The sample code below generates incorrect code when compiled under
Microsoft C versions 6.00 and 6.00a.

Compiling the sample code with /Fa (to produce an assembly listing)
shows the following statement to correspond with the inline assembly
statement in the sample code:

   fld     QWORD PTR [bp+4]

The correct instruction should be:

   fild      QWORD PTR [bp+4]

Furthermore, CodeView version 3.00 shows the statement as:

   ???      QWORD PTR [bp+4]

When the /qc (quick compile) option is specified, the code is
correctly generated:

   fild     QWORD PTR [bp+4]

Sample Code
-----------

/* Compile with /Fa /Zi /Od */

typedef struct qw_tag {
    unsigned char b[10];
} qw;

void _cdecl foo( qw a );

void main( )
{
        qw a;
        foo( a );
}

void _cdecl foo( qw a )
{
    _asm  fild qword ptr a
}

Microsoft has confirmed this to be a problem in C versions 6.00 and
6.00a. We are researching this problem and will post new information
here as it becomes available.