From 44fabee4e252d91ea09daf23f7dd1cce3f63abea Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 13 Jul 2012 09:45:00 +0000 Subject: [PATCH] re PR c/53937 (Pack'ing struct causes gcc to not recognize that an field's address is aligned) 2012-07-13 Richard Guenther PR middle-end/53937 * builtins.c (get_pointer_alignment_1): Handle constant pointers. From-SVN: r189458 --- gcc/ChangeLog | 6 ++++++ gcc/builtins.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bce65cc004..b317fc50ec4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-07-13 Richard Guenther + + PR middle-end/53937 + * builtins.c (get_pointer_alignment_1): Handle constant + pointers. + 2012-07-13 Richard Sandiford Steven Bosscher Bernd Schmidt diff --git a/gcc/builtins.c b/gcc/builtins.c index c12eb29aa02..040f352a0fb 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -536,6 +536,13 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp, return false; } } + else if (TREE_CODE (exp) == INTEGER_CST) + { + *alignp = BIGGEST_ALIGNMENT; + *bitposp = ((TREE_INT_CST_LOW (exp) * BITS_PER_UNIT) + & (BIGGEST_ALIGNMENT - 1)); + return true; + } *bitposp = 0; *alignp = BITS_PER_UNIT;