aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-12-21 07:01:59 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-12-21 07:01:59 +0000
commitbc83d568345bb3d8210b73f038109a972e7f6f6d (patch)
tree0a33810678aef4b1d2c2f1f3e4903455956a9497 /gcc
parent1079d2c187d78c2d3a974c42c56bb274bbde9da8 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/tree-ssanames.c11
-rw-r--r--gcc/tree-ssanames.h3
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);