diff options
author | Richard Biener <rguenther@suse.de> | 2023-06-21 11:12:36 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-06-21 13:38:02 +0200 |
commit | fb0447b1f6b7373f57cb3a3d17a46803cfd9909d (patch) | |
tree | 81b3a283fa1256e3b266c621f282ca4306950f20 /gcc/tree-loop-distribution.cc | |
parent | bb3c69058a5fb874ea3c5c26bfb331d33d0497c3 (diff) | |
download | gcc-fb0447b1f6b7373f57cb3a3d17a46803cfd9909d.zip gcc-fb0447b1f6b7373f57cb3a3d17a46803cfd9909d.tar.gz gcc-fb0447b1f6b7373f57cb3a3d17a46803cfd9909d.tar.bz2 |
Hide IVOPTs strip_offset
PR110243 shows strip_offset has some correctness issues, the following
avoids using it from loop distribution which can use the more correct
split_constant_offset from data-ref analysis instead. The patch then
un-exports the function from IVOPTs.
* tree-loop-distribution.cc (classify_builtin_st): Use
split_constant_offset.
* tree-ssa-loop-ivopts.h (strip_offset): Remove.
* tree-ssa-loop-ivopts.cc (strip_offset): Make static.
Diffstat (limited to 'gcc/tree-loop-distribution.cc')
-rw-r--r-- | gcc/tree-loop-distribution.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-loop-distribution.cc b/gcc/tree-loop-distribution.cc index 6291f94..cf7c197 100644 --- a/gcc/tree-loop-distribution.cc +++ b/gcc/tree-loop-distribution.cc @@ -1756,11 +1756,12 @@ classify_builtin_st (loop_p loop, partition *partition, data_reference_p dr) return; } - poly_uint64 base_offset; - unsigned HOST_WIDE_INT const_base_offset; - tree base_base = strip_offset (base, &base_offset); - if (!base_offset.is_constant (&const_base_offset)) + tree base_offset; + tree base_base; + split_constant_offset (base, &base_base, &base_offset); + if (!cst_and_fits_in_hwi (base_offset)) return; + unsigned HOST_WIDE_INT const_base_offset = int_cst_value (base_offset); struct builtin_info *builtin; builtin = alloc_builtin (dr, NULL, base, NULL_TREE, size); |