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 3.1/3.2 branch regression PR opt/8555


The regression reported in PR optimization/8555 showed up starting
with this patch to the 3.1 branch; it currently affects only the
3.2 branch.

2002-05-23  Jakub Jelinek  <jakub@redhat.com>

	PR target/6753
	* config/i386/i386.md (sse_movdfcc, sse_movdfcc_eq): Use Y instead
	of x in constraints for clarity.
	(sse_mov?fcc split): abort if op2 == op3.
	(sse_movsfcc_const0_1, sse_movsfcc_const0_2, sse_movsfcc_const0_3,
	sse_movsfcc_const0_4): Add earlyclobber.
	(sse_movdfcc_const0_1, sse_movdfcc_const0_2, sse_movdfcc_const0_3,
	sse_movdfcc_const0_4): Likewise.  Use DFmode, not SFmode.
	Use Y instead of x in constraints.

Here's a small test case that causes the compiler to ICE when compiled
on i686-linux with the 3.2 branch compiler.

-------------------
// ICE when compiled with -march=pentium3 -O -ffast-math -funroll-loops

float foo (float *a)
{
  int i, j;
  float x=a[j=i-1], y;

  for ( j=i; --j>=0; )
    if( (y=a[j]) > x )
      x = y;

  return x;
}
-------------------

Output from the 3.2 branch compiler: 

8555.c: In function `foo':
8555.c:13: Internal compiler error in gen_split_1233, at insn-emit.c:16727
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

I've added 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]