------- Comment #4 from pinskia at gcc dot gnu dot org 2009-04-28 21:18 ------- (In reply to comment #3) > There error I get on cc.c-torture/execute/20050604-1.c and > gcc.dg/torture/pr21817-1.c with optimization level 1 or greater is: > > x.c:6: error: invalid expression for min lvalue > D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; > > pr21817.c is pretty small already but I did cut it down to: > > typedef float v4sf __attribute__((vector_size(16))); > v4sf value; > void foo(void) > { > value += (v4sf){1e9f,1e9f,1e9f,1e9f}; > } > > It is not clear if we have generated bad gimple or if the verifier is wrong.
Part of both, CONSTRUCTOR for VECTOR_TYPE with CONSTANT set is a valid invariant but really BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64> should simplify to just 1.0e+9. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39932