From: Richard Sandiford Date: Thu, 21 Dec 2017 07:01:59 +0000 (+0000) Subject: poly_int: adjust_ptr_info_misalignment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bc83d568345bb3d8210b73f038109a972e7f6f6d;p=gcc.git 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 Alan Hayward David Sherwood 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 Co-Authored-By: David Sherwood From-SVN: r255928 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 26b35ab7c71..08052356f09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * 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 Alan Hayward David Sherwood diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index d00d64852c2..2fe6e3f1362 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 f7e032fe11d..ea62a0b84d5 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);