The following code: ----------------------------------------------------------------------- typedef float V2SF __attribute__ ((vector_size (8)));
V2SF foo (int x, V2SF a) { while (x--) a += (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f}; return a; } ----------------------------------------------------------------------- produces an ICE when optimisation is enabled: ----------------------------------------------------------------------- /tmp/foo.c: In function 'foo': /tmp/foo.c:9: error: invalid reference prefix {1.0e+0 / 0.0 + 1.0e+0 / -0.0, 1.0e+0 / 0.0 + 1.0e+0 / -0.0} /tmp/foo.c:9: error: invalid reference prefix {1.0e+0 / 0.0 + 1.0e+0 / -0.0, 1.0e+0 / 0.0 + 1.0e+0 / -0.0} /tmp/foo.c:9: internal compiler error: verify_stmts failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. ----------------------------------------------------------------------- -- Summary: ICE on semi-constant vector CONSTRUCTORs Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rsandifo at gcc dot gnu dot org GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33614