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



             Bug #: 56348

           Summary: internal compiler error in assign_by_spills with -m32

                    -fPIC -msse2

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: rtl-optimization

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: dnovi...@gcc.gnu.org

                CC: vmaka...@redhat.com

              Host: x86_64-unknown-linux-gnu

            Target: x86_64-unknown-linux-gnu

             Build: x86_64-unknown-linux-gnu





With trunk at rev 195930 I am running into the following ICE while building

SuiteSparse v3.4.0 (http://www.cise.ufl.edu/research/sparse/SuiteSparse/) with

-m32 and -fPIC.



Reduced test case:

+ ./cc1 min.c -quiet -m32 -O2 -fPIC -mfpmath=sse -msse2

min.c: In function 'cholmod_l_drop':

min.c:34:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1262

 }

 ^

0x7f0c54 assign_by_spills

        gcc/lra-assigns.c:1262

0x7f1c53 lra_assign()

        gcc/lra-assigns.c:1419

0x7ed914 lra(_IO_FILE*)

        gcc/lra.c:2307

0x7b41e0 do_reload

        gcc/ira.c:4614

0x7b41e0 rest_of_handle_reload

        gcc/ira.c:4726

Please submit a full bug report,

with preprocessed source if appropriate.

Please include the complete backtrace with any bug report.

See <http://gcc.gnu.org/bugs.html> for instructions.



$ cat min.c

typedef unsigned int size_t;



extern double fabs (double __x) __attribute__ ((__nothrow__, __leaf__))

  __attribute__ ((__const__));



typedef struct cholmod_sparse_struct

{

  size_t ncol;

  void *p;

} cholmod_sparse;



int cholmod_l_reallocate_sparse (size_t, cholmod_sparse *, void *);



int

cholmod_l_drop (double tol, cholmod_sparse * A)

{

  double aij;

  double *Ax;

  long long *Ap, *Ai, *Anz;

  long long packed, i, j, nrow, ncol, p, pend, nz, values;

  Ap = A->p;

  ncol = A->ncol;

  nz = 0;

  for (j = 0; j < ncol; j++)

    for (; p < pend; p++)

      {

        i = Ai[p];

        aij = Ax[p];

        if (i <= j && (fabs (aij) > tol || ((aij) != (aij))))

          nz++;

      }

  Ap[ncol] = nz;

  cholmod_l_reallocate_sparse (nz, A, 0);

}

Reply via email to