http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56223
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2013-02-06 Ever Confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-06 12:14:54 UTC --- Related support is in tree-ssa-phiopt.c which simply doesn't consider this more complex pattern. A changed pattern detection could detect if (v >= 0) use +v ... else use -v ... v unused outside the if and replace it with v' = abs (v); if (v >= 0) use v' ... else use v' ... and hope for further optimizations to detect the equivalences. Or special-case a single addition / subtraction statement here.