This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/37491] [4.4 Regression] Revision 140257 causes vectorizer tests 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: 15 Sep 2008 09:23:23 -0000
- Subject: [Bug middle-end/37491] [4.4 Regression] Revision 140257 causes vectorizer tests failures
- References: <bug-37491-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #8 from rguenther at suse dot de 2008-09-15 09:23 -------
Subject: Re: [4.4 Regression] Revision 140257 causes
vectorizer tests failures
On Mon, 15 Sep 2008, irar at il dot ibm dot com wrote:
>
>
> ------- Comment #7 from irar at il dot ibm dot com 2008-09-15 09:11 -------
> (In reply to comment #6)
>
> >
> > I see vect_create_data_ref_ptr is getting the type to use passed
> > in case of stores and this is TREE_TYPE (vec_oprnd) - is vec_oprnd
> > the lhs or the rhs? It looks like it is the rhs which may explain
> > the ICE for PR37385,
>
> It's the other way around in PR37385 - it ICEs if we use the type of lhs.
>
> > I can try to have a look here, but I'm not exactly familiar with
> > the code (thanks for the pointers ;)), so I'd appreciate if you
> > try to figure out what it takes to fix vect_create_data_ref_ptr or
> > its caller.
>
> Sure, I never meant to ask you to look into the vectorizer code. I only gave
> you the pointers because I thought you asked. Fixing the vectorizer code is not
> a problem. The problem is I don't really understand what we should generate.
>
> For scalar store *x = y we create vector store *vect_x = vect_y. The type of
> vect_x must be "vector type_of_x", right? This will cause the ICE in pr 37385,
> so we must check something to prevent it. AFAIU, the ICE is because the lhs and
> the element type of rhs do not alias. Testing "vector type_of_x" and
> "type_of_y" for alias does the job. But this prevents vectorization of
> vectorize2.c (vector int and long int do not alias)...
Well, I think the ICE happens because for stores we call
vect_create_data_ref_ptr with an explicit vector type which is based on
the rhs, not the lhs. The ICE should never occur if we based the
vector type on the lhs.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37491