diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-12-21 07:01:59 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-12-21 07:01:59 +0000 |
commit | bc83d568345bb3d8210b73f038109a972e7f6f6d (patch) | |
tree | 0a33810678aef4b1d2c2f1f3e4903455956a9497 /gcc | |
parent | 1079d2c187d78c2d3a974c42c56bb274bbde9da8 (diff) | |
download | gcc-bc83d568345bb3d8210b73f038109a972e7f6f6d.zip gcc-bc83d568345bb3d8210b73f038109a972e7f6f6d.tar.gz gcc-bc83d568345bb3d8210b73f038109a972e7f6f6d.tar.bz2 |
poly_int: adjust_ptr_info_misalignment
This patch makes adjust_ptr_info_misalignment take the adjustment
as a poly_uint64 rather than an unsigned int.
2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
as a poly_uint64 rather than an unsigned int.
* tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255928
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-ssanames.c | 11 | ||||
-rw-r--r-- | gcc/tree-ssanames.h | 3 |
3 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 26b35ab..0805235 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,14 @@ Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> + * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment + as a poly_uint64 rather than an unsigned int. + * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise. + +2017-12-21 Richard Sandiford <richard.sandiford@linaro.org> + Alan Hayward <alan.hayward@arm.com> + David Sherwood <david.sherwood@arm.com> + * varasm.c (addr_const::offset): Change from HOST_WIDE_INT to poly_int64. (decode_addr_const): Update accordingly. diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index d00d648..2fe6e3f 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -643,13 +643,16 @@ set_ptr_info_alignment (struct ptr_info_def *pi, unsigned int align, misalignment by INCREMENT modulo its current alignment. */ void -adjust_ptr_info_misalignment (struct ptr_info_def *pi, - unsigned int increment) +adjust_ptr_info_misalignment (struct ptr_info_def *pi, poly_uint64 increment) { if (pi->align != 0) { - pi->misalign += increment; - pi->misalign &= (pi->align - 1); + increment += pi->misalign; + if (!known_misalignment (increment, pi->align, &pi->misalign)) + { + pi->align = known_alignment (increment); + pi->misalign = 0; + } } } diff --git a/gcc/tree-ssanames.h b/gcc/tree-ssanames.h index f7e032f..ea62a0b 100644 --- a/gcc/tree-ssanames.h +++ b/gcc/tree-ssanames.h @@ -89,8 +89,7 @@ extern bool get_ptr_info_alignment (struct ptr_info_def *, unsigned int *, extern void mark_ptr_info_alignment_unknown (struct ptr_info_def *); extern void set_ptr_info_alignment (struct ptr_info_def *, unsigned int, unsigned int); -extern void adjust_ptr_info_misalignment (struct ptr_info_def *, - unsigned int); +extern void adjust_ptr_info_misalignment (struct ptr_info_def *, poly_uint64); extern struct ptr_info_def *get_ptr_info (tree); extern void set_ptr_nonnull (tree); extern bool get_ptr_nonnull (const_tree); |