Mail Archives: pgcc/1999/07/02/19:24:38
Hi,
one of the files in the test suite, 950512-5.c
could not be compiled with optimization.
Here's the file:
------------------------------------------------------------------------
typedef unsigned short uint16;
f (unsigned char *w)
{
w[2] = (uint16) ((((g (0) % 10000 + 42) & 0xFF) << 8) | (((g (0) % 10000 + 42) >> 8) & 0xFF)) & 0xFF,
w[3] = (uint16) ((((g (0) % 10000 + 42) & 0xFF) << 8) | (((g (0) % 10000 + 42) >> 8) & 0xFF)) >> 8;
}
------------------------------------------------------------------------
Here's the
error:
------------------------------------------------------------------------
950512-1.c: In function `f':
950512-1.c:6: fixed or forbidden register 0 (ax) was spilled for class AREG.
950512-1.c:6: This may be due to a compiler bug or to impossible asm
950512-1.c:6: statements or clauses.
950512-1.c:6: This is the instruction:
(insn 60 57 61 (parallel[
(set (reg:SI 1 %edx)
(truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 5 %edi))
(sign_extend:DI (reg:SI 3 %ebx)))
(const_int 32 [0x20]))))
(clobber (scratch:SI))
] ) 241 {smulsi3_highpart} (insn_list 49 (nil))
(expr_list:REG_DEAD (reg:SI 3 %ebx)
(expr_list:REG_UNUSED (scratch:SI)
(nil))))
------------------------------------------------------------------------
The platform on which it occured is pentiumpro, but I suspect
it's platform-independent. The version of pgcc used is 990629.
Thanks
Igor
- Raw text -