diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-20 16:20:27 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-20 16:20:27 +0000 |
commit | 85c1f5872eb89ba116deaf5858be761bf34ddc8d (patch) | |
tree | 6b23939362e89fdccf8a629a4075095b0d5d1906 /gcc/builtins.c | |
parent | f9ead664f2dba52bcc3f977d8cadf01de99feb39 (diff) | |
download | gcc-85c1f5872eb89ba116deaf5858be761bf34ddc8d.tar.gz |
2005-12-20 Richard Guenther <rguenther@suse.de>
PR middle-end/24306
* builtins.c (std_gimplify_va_arg_expr): Do not align
va frame for zero sized types.
* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
* gcc.target/i386/pr24306.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 29ec05c7272..7c5711195b5 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4162,7 +4162,8 @@ std_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p) /* va_list pointer is aligned to PARM_BOUNDARY. If argument actually requires greater alignment, we must perform dynamic alignment. */ - if (boundary > align) + if (boundary > align + && !integer_zerop (TYPE_SIZE (type))) { t = fold_convert (TREE_TYPE (valist), size_int (boundary - 1)); t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp, |