https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79095

--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> ---
(In reply to Jeffrey A. Law from comment #4)
> So the simplified tests are interesting, but ultimately too simplified.  The
> VRP prototype which works on the simplified testcases doesn't work on the
> real testcase for this BZ.
> 
> The key sequences look like:
> 
>  _13 = (long unsigned int) _12;
>   _121 = ADD_OVERFLOW (_13, 18446744073709551615);
>   _1 = REALPART_EXPR <_121>;
>   _39 = IMAGPART_EXPR <_121>;
>   if (_1 > _13)
>     goto <bb 4>; [29.56%]
>   else
>     goto <bb 18>; [70.44%]
> 
> 
> Which defeat the simplistic prototype for VRP.  It's essentially still the
> same construct, but we'd have to extract stuff out of the COMPLEX_EXPR and
> recognize the ADD_OVERFLOW.

I thought ADD_OVERFLOW would appear in the widening_mul pass, i.e. after all
the VRP passes are done? On the other hand, teaching VRP about *_OVERFLOW
sounds like a good idea.

Reply via email to