nuth@WHEATIES.AI.MIT.EDU (Peter Nuth) (09/21/88)
/* Program fail.c - to demonstrate bug in GNU C compiler version 1.28 */
/* by nuth@wheaties.ai.mit.edu */
/* Compile using "gcc fail.c " */
/* Works correctly if you use "gcc -O fail.c" */
/* Compiled on sun-3 in the MIT AI lab. */
/* Generates incorrect assembly code - */
/* "gcc -S fail.c" shows this */
struct foober {
int x;
struct small *a;
};
struct small {
int x;
unsigned char t[50];
unsigned char d[50];
};
struct foober afoob;
struct small asmall;
int main()
{
struct foober *m;
int rt, rd, offset = 12; /* Assigning chars to ints should work */
unsigned char nrt;
m = &afoob;
m->a = &asmall;
m->a->t[offset] = 30;
/* Bug here in code generation */
rt = (int) m->a->t[offset] ; /* rt does not get assigned */
nrt = m->a->t[offset] ;
printf("rt = %x ", rt);
printf("nrt = %x ", nrt);
printf("should be rt = %x\n", m->a->t[offset]) ;
}