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]; } } }