[PATCH] Fix MINUS_EXPR vect reduction handling (PR tree-optimization/54877)

Jakub Jelinek jakub@redhat.com
Wed Oct 10 08:56:00 GMT 2012


On Wed, Oct 10, 2012 at 10:42:10AM +0200, Richard Biener wrote:
> Yeah, I meant we can negate all constants by doing
> 
>  tem = - CONSTANT;

Yeah, that is what I meant.  tem = - INT_MIN; is undefined overflow.
> 
> right?  Or wait ... even if we have
> 
>   red = x - y;
> 
> if y is INT_MIN then the code we just created may have introduced
> undefined overflow (of course you could argue that with x - y it
> is very likely that undefined overflow already happened) ...

Not for negative x.

x = -3;
y = -__INT_MAX__ - 1;
red = x - y;

is IMHO fine.

> > >  The ICE simply means
> > > we should have used make_temp_ssa_name (TREE_TYPE (rhs), NULL, NULL)
> > > instead of copy_ssa_name.
> > 
> > Is make_temp_ssa_name (TREE_TYPE (rhs), NULL, NULL) preferrable over just
> > make_ssa_name (TREE_TYPE (rhs), NULL); ?
> 
> Ah, no, make_ssa_name (TREE_TYPE (rhs), NULL) is even better.  On
> the 4.7 branch you need to create a new temp var ...

Sure.

	Jakub



More information about the Gcc-patches mailing list