http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58742
--- Comment #19 from Richard Biener <rguenth at gcc dot gnu.org> --- The original identity will remain. That is, ;; Function fx (fx, funcdef_no=0, decl_uid=1743, symbol_order=0) fx (int * b, int * e) { long int e.0_2; long int b.1_4; long int _5; long unsigned int _6; int * _7; <bb 2>: e.0_2 = (long int) e_1(D); b.1_4 = (long int) b_3(D); _5 = e.0_2 - b.1_4; _6 = (long unsigned int) _5; _7 = b_3(D) + _6; return _7; } that is to be pattern-matched separately, in associate_pointerplus. Of course that's only a piece of associating as b+5+(e-b) will then still not be optimized.