This is the mail archive of the gcc-bugs@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]

[Bug target/13674] New: ICE in reload_cse_simplify_operands, at postreload.c:378 on PPC64


With this compiler:

[dhcp10:~/programs/gambc40b4] lucier% gcc -v
Reading specs from /pkgs/gcc-3.4/lib/gcc/powerpc-apple-darwin7.2.0/3.4.0/specs
Configured with: ../configure --prefix=/pkgs/gcc-3.4
Thread model: posix
gcc version 3.4.0 20040113 (experimental)

and the following input, you get the following ICE:

[dhcp10:~/programs/gambc40b4] lucier% gcc -I../include -I. -no-cpp-precomp -Wall
-W -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math
-fno-strict-aliasing -fomit-frame-pointer -fPIC -fno-common -mcpu=G5 -save-temps
-DHAVE_CONFIG_H -D___PRIMAL -D___LIBRARY -D___GAMBCDIR=\"/usr/local/\" testppc.i
gcc: unrecognized option `-no-cpp-precomp'
testppc.i: In function `___H__23__23_integer_3f_':
testppc.i:69: error: insn does not satisfy its constraints:
(insn 360 307 97 8 (set (reg:DF 0 r0)
        (mem:DF (plus:SI (reg/v:SI 30 r30 [orig:125 ___r1 ] [125])
                (const_int 3 [0x3])) [0 S8 A64])) 318 {*movdf_hardfloat64} (nil)
    (nil))
testppc.i:69: internal compiler error: in reload_cse_simplify_operands, at
postreload.c:378

/* test file */

static int      ___lp;

typedef struct ___processor_state_struct {
	int             r[5];
	int             pc;
	int             temp1;
	int             na;
	int             handler_wrong_nargs;
}               ___processor_state_struct, *___processor_state;

typedef int     (*___host) (___processor_state);

typedef struct ___label_struct {
	void           *host_label;
	___host         host;
}               ___label_struct;

extern int      ___isfinite
                (double x);

extern double   floor(double);

static int 
___H__23__23_integer_3f_(___processor_state ___ps)
{
	register int    ___pc, ___start, ___temp;
	register unsigned long long ___temp64;
	register int    ___r0;
	register int    ___r1;
	double          ___F64V1;
	double          ___F64V2;
	static void    *___hlbl_tbl[] = {
		0,
		&&___L0__23__23_integer_3f_,
	0};
	if (___ps == 0)
		return (int) ___hlbl_tbl;
	___r0 = ___ps->r[0];
	___r1 = ___ps->r[1];
	___start = ___lp + ((137) * 4 * 4);
	___pc = ___ps->pc;
	goto *((___label_struct *) (___pc - 1))->host_label;
___L0__23__23_integer_3f_:
	if (___ps->na == 1) {
	} else {
		___ps->temp1 = ___start + ((137 - 137 + 0) * 4 * 4); {{
				___pc = ___ps->handler_wrong_nargs;
				goto ___jumpext;
		}
		}
	}
___L__23__23_integer_3f_:
	if (((___r1 & ((1 << 2) - 1)) == (0))) {
		goto ___L3__23__23_integer_3f_;
	}
	if (!(((___temp = (___r1)) & ((1 << 2) - 1)) == 1 && ((((*((int *) ((___temp) -
(1))))) & (((1 << 5) - 1) << 3)) == (((30)) << 3)))) {
		goto ___L1__23__23_integer_3f_;
	}
	___F64V1 = (*((double *) ((((void *) ((___r1) - (1))) + 4))));
	if (!___isfinite(___F64V1)) {
		goto ___L2__23__23_integer_3f_;
	}
	___F64V1 = (*((double *) ((((void *) ((___r1) - (1))) + 4))));
	___F64V2 = floor(___F64V1);
	___r1 = (((___F64V1 == ___F64V2)) ? ((((int) (-2)) << 2) + 2) : ((((int) (-1))
<< 2) + 2));
	{{
			void           *___host_label;
			___pc = ___r0;
			___host_label = ((___label_struct *) (___pc - 1))->host_label;
			if (((___label_struct *) (___pc - 1))->host == ___H__23__23_integer_3f_)
				goto *___host_label;
			goto ___jumpext;
	}
	}
___L1__23__23_integer_3f_:
	if (!((___r1 & ((1 << 2) - 1)) == (1))) {
		goto ___L2__23__23_integer_3f_;
	}
	___r1 = ((((*((int *) ((___r1) - (1)))) & (((1 << 5) - 1) << 3)) >> (3 - 2)));
	if ((___r1 == (((int) (31L)) << 2))) {
		goto ___L3__23__23_integer_3f_;
	}
	if ((___r1 == (((int) (2L)) << 2))) {
		goto ___L2__23__23_integer_3f_;
	}
	if (!(___r1 == (((int) (3L)) << 2))) {
		goto ___L2__23__23_integer_3f_;
	}
___L2__23__23_integer_3f_:
	___r1 = (((((int) (-1)) << 2) + 2));
	{{
			void           *___host_label;
			___pc = ___r0;
			___host_label = ((___label_struct *) (___pc - 1))->host_label;
			if (((___label_struct *) (___pc - 1))->host == ___H__23__23_integer_3f_)
				goto *___host_label;
			goto ___jumpext;
	}
	}
___L3__23__23_integer_3f_:
	___r1 = (((((int) (-2)) << 2) + 2));
	{{
			void           *___host_label;
			___pc = ___r0;
			___host_label = ((___label_struct *) (___pc - 1))->host_label;
			if (((___label_struct *) (___pc - 1))->host == ___H__23__23_integer_3f_)
				goto *___host_label;
			goto ___jumpext;
	}
	}
___jumpext:
	___ps->pc = ___pc;
	___ps->r[1] = ___r1;
	return ___pc;
}

-- 
           Summary: ICE in reload_cse_simplify_operands, at postreload.c:378
                    on PPC64
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: lucier at math dot purdue dot edu
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: powerpc-apple-darwin7.2.0
  GCC host triplet: powerpc-apple-darwin7.2.0
GCC target triplet: powerpc-apple-darwin7.2.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13674


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