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