From: Andrew MacLeod Date: Fri, 16 Oct 2020 19:10:17 +0000 (-0400) Subject: pointer_plus [0, 0] + const folding X-Git-Tag: basepoints/gcc-12~4239 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=58492575a118fd14c8184823467c815347cde219;p=thirdparty%2Fgcc.git pointer_plus [0, 0] + const folding Return a constant range if POINTER_PLUS is [0,0] plus a const. * range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus [0, 0] + const return a [const, const] range. --- diff --git a/gcc/range-op.cc b/gcc/range-op.cc index de4cfe45a48d..0efa00186e82 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -3064,6 +3064,14 @@ pointer_plus_operator::wi_fold (irange &r, tree type, const wide_int &rh_lb, const wide_int &rh_ub) const { + // Check for [0,0] + const, and simply return the const. + if (lh_lb == 0 && lh_ub == 0 && rh_lb == rh_ub) + { + tree val = wide_int_to_tree (type, rh_lb); + r.set (val, val); + return; + } + // For pointer types, we are really only interested in asserting // whether the expression evaluates to non-NULL. //