[Bug rtl-optimization/67201] New: PowerPC -mlra hits ICE: Max. number of generated reload insns per insn is achieved
anton at samba dot org
gcc-bugzilla@gcc.gnu.org
Thu Aug 13 07:15:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67201
Bug ID: 67201
Summary: PowerPC -mlra hits ICE: Max. number of generated
reload insns per insn is achieved
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: anton at samba dot org
Target Milestone: ---
I'm seeing an ICE on ppc64le when using -O1 -mlra:
# gcc -O1 -mlra testcase.i
testcase.i:31:1: internal compiler error: Max. number of generated reload insns
per insn is achieved (90)
}
^
0x1067d093 lra_constraints(bool)
../../gcc/gcc/lra-constraints.c:4345
0x10661c8b lra(_IO_FILE*)
../../gcc/gcc/lra.c:2300
0x1060286b do_reload
../../gcc/gcc/ira.c:5394
0x1060286b execute
../../gcc/gcc/ira.c:5565
# cat testcase.i
typedef struct {
} cGH;
typedef int (*reduction_fn_t) (cGH * GH, int proc, int num_dims, int from[],
int to[], int iterator[], int points_per_dim[],
int num_points, int num_inarrays, int intypes[],
void *inarrays[], int num_outvals,
double outvals[]);
static int copy_real_to_outtype(int num_elems, double inarray[], int outtype,
void *outarray);
int PUGH_ReductionGVs(cGH * GH, int proc, int num_invars, int invars[],
int outtype, int num_outvals, void *outvals,
reduction_fn_t reduction_fn)
{
int i, myproc, outtypesize, this_retval, retval;
double result;
for (i = 0; i < num_invars; i++) {
switch (CCTK_GroupTypeFromVarI(invars[i])) {
case 2:
case 3:
this_retval =
PUGH_ReductionGA(GH, invars[i], proc, &result,
reduction_fn);
}
if (this_retval == 0 && (proc < 0 || proc == myproc)) {
this_retval =
copy_real_to_outtype(1, &result, outtype,
(char *)outvals +
i * outtypesize);
}
}
}
static int copy_real_to_outtype(int num_elems, double inarray[], int outtype,
void *outarray)
{
int i, retval;
if (outtype == 1) {
long double *_outarray = (long double *)outarray;
for (i = 0; i < num_elems; i++) {
_outarray[i] = (long double)inarray[i];
}
}
}
More information about the Gcc-bugs
mailing list