------- Comment #5 from rguenther at suse dot de 2009-04-28 21:21 ------- Subject: Re: [4.5 Regression] Revision 146831 caused many test failures
On Tue, 28 Apr 2009, pinskia at gcc dot gnu dot org wrote: > (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. It indeed doesn't look invalid from a first glance. But shouldn't this be VECTOR_CST instead of CONSTRUCTOR? The question is of course what the type of D.2000 is. floats are certainly not 64bits at least. Richard. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39932