diff options
author | Ian Lance Taylor <iant@golang.org> | 2023-03-29 09:01:23 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2023-03-29 09:01:23 -0700 |
commit | 6612f4f8cb9b0d5af18ec69ad04e56debc3e6ced (patch) | |
tree | 1deecdcfbf185c7044bc861d0ace51285c96cb62 /gcc/tree-data-ref.cc | |
parent | 795cffe109e28b248a54b8ee583cbae48368c2a7 (diff) | |
parent | aa8f4242efc99f24de73c59d53996f28db28c13f (diff) | |
download | gcc-6612f4f8cb9b0d5af18ec69ad04e56debc3e6ced.zip gcc-6612f4f8cb9b0d5af18ec69ad04e56debc3e6ced.tar.gz gcc-6612f4f8cb9b0d5af18ec69ad04e56debc3e6ced.tar.bz2 |
Merge from trunk revision aa8f4242efc99f24de73c59d53996f28db28c13f.
Diffstat (limited to 'gcc/tree-data-ref.cc')
-rw-r--r-- | gcc/tree-data-ref.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/tree-data-ref.cc b/gcc/tree-data-ref.cc index ff9327f..2360251 100644 --- a/gcc/tree-data-ref.cc +++ b/gcc/tree-data-ref.cc @@ -1,5 +1,5 @@ /* Data references and dependences detectors. - Copyright (C) 2003-2022 Free Software Foundation, Inc. + Copyright (C) 2003-2023 Free Software Foundation, Inc. Contributed by Sebastian Pop <pop@cri.ensmp.fr> This file is part of GCC. @@ -594,7 +594,8 @@ compute_distributive_range (tree type, value_range &op0_range, if (result_range) { range_op_handler op (code, type); - op.fold_range (*result_range, type, op0_range, op1_range); + if (!op.fold_range (*result_range, type, op0_range, op1_range)) + result_range->set_varying (type); } /* The distributive property guarantees that if TYPE is no narrower @@ -642,7 +643,8 @@ compute_distributive_range (tree type, value_range &op0_range, range_op_handler op (code, ssizetype); bool saved_flag_wrapv = flag_wrapv; flag_wrapv = 1; - op.fold_range (wide_range, ssizetype, op0_range, op1_range); + if (!op.fold_range (wide_range, ssizetype, op0_range, op1_range)) + wide_range.set_varying (ssizetype);; flag_wrapv = saved_flag_wrapv; if (wide_range.num_pairs () != 1 || !range_int_cst_p (&wide_range)) return false; @@ -2977,10 +2979,10 @@ dr_may_alias_p (const struct data_reference *a, const struct data_reference *b, && operand_equal_p (DR_OFFSET (a), DR_OFFSET (b)) && poly_int_tree_p (tree_size_a) && poly_int_tree_p (tree_size_b) - && !ranges_maybe_overlap_p (wi::to_widest (DR_INIT (a)), - wi::to_widest (tree_size_a), - wi::to_widest (DR_INIT (b)), - wi::to_widest (tree_size_b))) + && !ranges_maybe_overlap_p (wi::to_poly_widest (DR_INIT (a)), + wi::to_poly_widest (tree_size_a), + wi::to_poly_widest (DR_INIT (b)), + wi::to_poly_widest (tree_size_b))) { gcc_assert (integer_zerop (DR_STEP (a)) && integer_zerop (DR_STEP (b))); |