The following fixes PR67053 by more closely mirror what fold_binary()s STRIP_NOPS does to avoid the C++ FE constexpr code to regress.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. Yes, I'm thinking on an automated way to more closely mirror STRIP_[SIGN_]NOPS behavior (on toplevel args). Richard. 2015-07-29 Richard Biener <rguent...@suse.de> PR middle-end/67053 * match.pd: Allow both operands to independently have conversion when simplifying compares of addresses. Index: gcc/match.pd =================================================================== --- gcc/match.pd (revision 226345) +++ gcc/match.pd (working copy) @@ -1814,7 +1814,7 @@ (define_operator_list CBRT BUILT_IN_CBRT enough to make fold_stmt not regress when not dispatching to fold_binary. */ (for cmp (simple_comparison) (simplify - (cmp (convert?@2 addr@0) (convert? addr@1)) + (cmp (convert1?@2 addr@0) (convert2? addr@1)) (with { HOST_WIDE_INT off0, off1;