[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