GCC trunk gets a ICE when building SPEC CPU2000 test 177.mesa with "-O2 -mvsx
-mno-altivec -ftree-vectorize", as demonstrated by this minimized testcase:

void
gl_xform_normals_3fv (unsigned int n, float v[][3], const float m[16],
                      float u[][3], unsigned char normalize)
{
      unsigned int i;
      float m0 = m[0], m4 = m[4], m8 = m[8];
      float m1 = m[1], m5 = m[5], m9 = m[9];
      float m2 = m[2], m6 = m[6], m10 = m[10];
      for (i = 0; i < n; i++)
        {
          float ux = u[i][0], uy = u[i][1], uz = u[i][2];
          v[i][0] = ux * m0 + uy * m1 + uz * m2;
          v[i][1] = ux * m4 + uy * m5 + uz * m6;
          v[i][2] = ux * m8 + uy * m9 + uz * m10;
        }
}

elm3b149% /home/janis/tools/gcc-trunk-anonsvn/bin/gcc -O2 -mvsx -mno-altivec
-ftree-vectorize -c bug.c
bug.c: In function ‘gl_xform_normals_3fv’:
bug.c:2:1: internal compiler error: in rs6000_builtin_vec_perm, at
config/rs6000/rs6000.c:3102
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

VSX support is new in GCC 4.5 so this is not a regression from earlier
releases.


-- 
           Summary: ICE in rs6000_bulitin_vec_perm for 177.mesa with -mvsx
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis at gcc dot gnu dot org
GCC target triplet: powerpc64-linux


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

Reply via email to