This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

patch that caused regression PR optimization/8994


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]