From cb326dd0e1fa33eb37967950f7e0bf0b396795b8 Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Wed, 17 Dec 2025 09:34:28 -0500 Subject: [PATCH] Unify range_of_address with other range_of_* routines. When range_of_address is called, we return immeidately, missing any potential post calculation processing. * gimple-range-fold.cc (fold_using_range::fold_stmt): Move range_of_address call into nested 'if' with other routines. --- gcc/gimple-range-fold.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc index 2a968a646d2..9119765125f 100644 --- a/gcc/gimple-range-fold.cc +++ b/gcc/gimple-range-fold.cc @@ -668,16 +668,14 @@ fold_using_range::fold_stmt (vrange &r, gimple *s, fur_source &src, tree name) name = gimple_get_lhs (s); // Process addresses and loads from static constructors. - if (gimple_code (s) == GIMPLE_ASSIGN) - { - if (gimple_assign_rhs_code (s) == ADDR_EXPR) - return range_of_address (as_a (r), s, src); - if (range_from_readonly_var (r, s)) - return true; - } + if (gimple_code (s) == GIMPLE_ASSIGN && range_from_readonly_var (r, s)) + return true; gimple_range_op_handler handler (s); - if (handler) + if (gimple_code (s) == GIMPLE_ASSIGN + && gimple_assign_rhs_code (s) == ADDR_EXPR) + res = range_of_address (as_a (r), s, src); + else if (handler) res = range_of_range_op (r, handler, src); else if (is_a(s)) res = range_of_phi (r, as_a (s), src);