https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81403
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- PRE losing "& 10393" at -O3 but not -O2 (the previous dumps are identical) @@ -611,6 +639,7 @@ ;; 6 [100.0%] (FALLTHRU,EXECUTABLE) # .MEM_21 = PHI <.MEM_26(5), .MEM_25(6)> # prephitmp_34 = PHI <_30(5), _30(6)> + # prephitmp_35 = PHI <_30(5), _30(6)> # VUSE <.MEM_21> var_33.4_11 = var_33D.35372; if (var_33.4_11 != 0) @@ -624,9 +653,7 @@ ;; prev block 7, next block 9, flags: (NEW, REACHABLE, VISITED) ;; pred: 7 [54.0%] (TRUE_VALUE,EXECUTABLE) # RANGE [0, 10393] NONZERO 10393 - _29 = prephitmp_34 & 10393; - # RANGE [0, 10393] NONZERO 10393 - _15 = (long intD.12) _29; + _15 = (long intD.12) prephitmp_35;