From e4f1aef1367c1b32d1ec74310265c86184b81010 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 2 Jul 2010 20:51:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/pa/pa.c | 9 ++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f797b72fec..ef80e6e35a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-07-02 Richard Guenther + + PR target/43958 + * config/pa/pa.c (hppa_gimplify_va_arg_expr): Use pointer arithmetic + for argument alignment. + 2010-07-02 Jan Hubicka * ipa-split.c (verify_non_ssa_vars): Break out from ...; perform DFS walk diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 2640f05e1bc..a96bbacca3c 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); -- 2.30.2