This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/39932] [4.5 Regression] Revision 146831 caused many test failures
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 Apr 2009 21:21:40 -0000
- Subject: [Bug middle-end/39932] [4.5 Regression] Revision 146831 caused many test failures
- References: <bug-39932-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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