patch that caused regression PR optimization/8994
Janis Johnson
janis187@us.ibm.com
Wed Dec 18 17:29:00 GMT 2002
The regression reported in PR optimization/8994 showed up starting
with this patch:
Thu Dec 13 12:31:07 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.c (override_options): Recognize various CPU variants and set
SSE/MMX/3dNOW flags accordingly.
* i386.h (MASK_MMX_SET, MASK_SSE_SET, MASK_SSE2_SET, MASK_3DNOW_SET,
MASK_3DNOW_A_SET): New.
(MASK_ACCUMULATE_OUTGOING_ARGS_SET): New.
(MASK_NO_ACCUMULATE_OUTGOING_ARGS): Delete.
(MASK_*): Renumber.
(TARGET_FLAGS): Use new masks.
(CPP_CPU_SPECS): Recognize new CPU variants.
* invoke.texi (-mcpu): Update documentation.
In the ChangeLog and cvs logs, this in included with several other
files whose changes seem to be separate. If I build cc1 just before
this patch was added, the test compiles cleanly, but when the files
i386.c and i386.h are updated it gets the same ICE as the mainline.
Here's Wolfgang's new test case from the PR (it avoids some of the
problems of the original test case):
---------------------
void foo (double d)
{
union { double d; int i; } u;
while (1)
{
u.d = d;
if (u.i & 1) return;
}
}
---------------------
Here's the compiler output when compiled with "-O -march=pentium4"
on i686-linux with the mainline or the 3.2 branch:
8994.c: In function `foo':
8994.c:10: error: unable to find a register to spill in class `AREG'
8994.c:10: error: this is the insn:
(insn 19 18 20 1 0x2abbc2c0 (set (reg:CCNO 17 flags)
(compare:CCNO (and:SI (subreg:SI (reg/v:DI 21 rxmm0 [59]) 0)
(const_int 1 [0x1]))
(const_int 0 [0x0]))) 199 {testsi_1} (insn_list 16 (nil))
(expr_list:REG_DEAD (reg/v:DI 21 rxmm0 [59])
(nil)))
8994.c:10: internal compiler error: in spill_failure, at reload1.c:1922
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
I'll add this information to the PR.
Janis
More information about the Gcc
mailing list