diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index fea5741..7585164 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -769,7 +769,14 @@ backtrace_base_for_ref (tree *pbase) STRIP_NOPS (base_in); if (TREE_CODE (base_in) != SSA_NAME) - return tree_to_double_int (integer_zero_node); + { + /* Strip of widening conversion(s) to handle cases where + e.g. 'B' is widened from an 'int' in order to calculate + a 64-bit address. */ + base_in = get_unwidened (base_in, NULL_TREE); + if (TREE_CODE (base_in) != SSA_NAME) + return tree_to_double_int (integer_zero_node); + } base_cand = base_cand_from_table (base_in);