https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110233
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aldyh at gcc dot gnu.org --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- VRP2/DOM3 produces the wrong folding for some reason: Folding statement: _27 = b.6_9 * 2; Queued stmt for removal. Folds to: 2147483647 I don't uinderstand how it could get that from: # RANGE [irange] long unsigned int [0, 2147483647][18446744071562067968, +INF] _8 = (long unsigned intD.10) c.5_7; # VUSE <.MEM_18(D)> b.6_9 = bD.2751; # RANGE [irange] long unsigned int [0, 2147483647][18446744071562067968, +INF] _10 = (long unsigned intD.10) b.6_9; # RANGE [irange] long unsigned int [0, 4294967294][18446744069414584320, +INF] _11 = _8 + _10; # RANGE [irange] long unsigned int [0, 813160647][18446744065932777673, +INF] _12 = _11 + 18446744070227744969; if (_12 <= 2) goto <bb 3>; [50.00%] else goto <bb 9>; [50.00%] ;; succ: 3 [50.0% (guessed)] count:357878153 (estimated locally) (TRUE_VALUE,EXECUTABLE) ;; 9 [50.0% (guessed)] count:357878153 (estimated locally) (FALSE_VALUE,EXECUTABLE) ;; basic block 3, loop depth 0, count 357878153 (estimated locally), maybe hot ;; prev block 2, next block 4, flags: (NEW, REACHABLE, VISITED) ;; pred: 2 [50.0% (guessed)] count:357878153 (estimated locally) (TRUE_VALUE,EXECUTABLE) _28 = b.6_9 * 2;