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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |109934

--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #7)
> (In reply to Sam James from comment #6)
> > Simplified a bit:
> 
> Just some debug:
> 
> When we create one of the unswitch_predicate for the second switch, we have:
> 
> true_range:
> [irange] int [4, 4][6, 6][8, 8] NONZERO 0xf
> false_range:
> [irange] int [4, +INF] NONZERO 0x7fffffff
> 
> That false_range looks wrong because there is no .
> 
> It was created by doing:
>     false_range = true_range;
>     if (!false_range.varying_p ()
>       && !false_range.undefined_p ())
>       false_range.invert ();
> 
> The code looks correct.

This is exactly the same debug as what was done in PR 109934 :).


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109934
[Bug 109934] [14 Regression] Wrong code at -O3 on x86_64-linux-gnu

Reply via email to