aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-07-02 20:51:58 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2010-07-02 20:51:58 +0000
commite4f1aef1367c1b32d1ec74310265c86184b81010 (patch)
tree81a7e2d4655679b1e71182d74ed3ececbc3ec07e /gcc/config/pa
parent1b9d45ed41a0d11774b55334fc8d1ca9a1f07fe5 (diff)
downloadgcc-e4f1aef1367c1b32d1ec74310265c86184b81010.zip
gcc-e4f1aef1367c1b32d1ec74310265c86184b81010.tar.gz
gcc-e4f1aef1367c1b32d1ec74310265c86184b81010.tar.bz2
re PR target/43958 (FAIL: gcc.dg/ipa/ipa-pta-10.c scan-ipa-dump pta "ESCAPED = { }")
PR target/43958 * config/pa/pa.c (hppa_gimplify_va_arg_expr): Use pointer arithmetic for argument alignment. From-SVN: r161746
Diffstat (limited to 'gcc/config/pa')
-rw-r--r--gcc/config/pa/pa.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 2640f05..a96bbac 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -6040,11 +6040,10 @@ hppa_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
u = fold_build1 (NEGATE_EXPR, sizetype, u);
t = build2 (POINTER_PLUS_EXPR, valist_type, valist, u);
- /* Copied from va-pa.h, but we probably don't need to align to
- word size, since we generate and preserve that invariant. */
- u = size_int (size > 4 ? -8 : -4);
- t = fold_convert (sizetype, t);
- t = build2 (BIT_AND_EXPR, sizetype, t, u);
+ /* Align to 4 or 8 byte boundary depending on argument size. */
+
+ u = build_int_cst (TREE_TYPE (t), (HOST_WIDE_INT)(size > 4 ? -8 : -4));
+ t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t, u);
t = fold_convert (valist_type, t);
t = build2 (MODIFY_EXPR, valist_type, valist, t);