From: Andrew MacLeod Date: Sat, 23 Nov 2024 19:05:54 +0000 (-0500) Subject: Only add inferred ranges if they change the value. X-Git-Tag: basepoints/gcc-16~3553 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7fd6c4369ef1a009b40c1787ea9d2dad2cf449f;p=thirdparty%2Fgcc.git Only add inferred ranges if they change the value. Do not add an inferred range if it is already incorprated in the current range of an SSA_NAME. PR tree-optimization/117467 * gimple-range-infer.cc (infer_range_manager::add_ranges): Check range_of_expr to see if the inferred range is needed. --- diff --git a/gcc/gimple-range-infer.cc b/gcc/gimple-range-infer.cc index aba5c3d9bfcb..94613cba098a 100644 --- a/gcc/gimple-range-infer.cc +++ b/gcc/gimple-range-infer.cc @@ -400,7 +400,14 @@ void infer_range_manager::add_ranges (gimple *s, gimple_infer_range &infer) { for (unsigned x = 0; x < infer.num (); x++) - add_range (infer.name (x), s, infer.range (x)); + { + tree arg = infer.name (x); + value_range r (TREE_TYPE (arg)); + m_query->range_of_expr (r, arg, s); + // Only add the inferred range if it changes the current range. + if (r.intersect (infer.range (x))) + add_range (arg, s, infer.range (x)); + } } // Add range R as an inferred range for NAME on stmt S.