diff options
author | Richard Guenther <rguenther@suse.de> | 2009-05-05 16:08:24 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-05-05 16:08:24 +0000 |
commit | 8d972839dfb7749bd218b9b6804a33e353c83d4f (patch) | |
tree | 7e575827eddf3afb9745eccb6ba54bf3460a7b91 | |
parent | 95e207682899fcbf2bcfc43dd2926a6e866e884a (diff) | |
download | gcc-8d972839dfb7749bd218b9b6804a33e353c83d4f.zip gcc-8d972839dfb7749bd218b9b6804a33e353c83d4f.tar.gz gcc-8d972839dfb7749bd218b9b6804a33e353c83d4f.tar.bz2 |
re PR middle-end/40023 (type mismatch in address expression)
2009-05-05 Richard Guenther <rguenther@suse.de>
PR middle-end/40023
* builtins.c (gimplify_va_arg_expr): Properly build the
address.
* gcc.c-torture/compile/pr40023.c: New testcase.
From-SVN: r147127
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr40023.c | 11 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 365176b..f976b77 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-05-05 Richard Guenther <rguenther@suse.de> + + PR middle-end/40023 + * builtins.c (gimplify_va_arg_expr): Properly build the + address. + 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com> * tree.h (strip_float_extensions): Remove duplicate declaration. diff --git a/gcc/builtins.c b/gcc/builtins.c index 0436229..e124189 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5033,7 +5033,7 @@ gimplify_va_arg_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) if (TREE_CODE (TREE_TYPE (valist)) == ARRAY_TYPE) { tree p1 = build_pointer_type (TREE_TYPE (have_va_type)); - valist = build_fold_addr_expr_with_type (valist, p1); + valist = fold_convert (p1, build_fold_addr_expr (valist)); } gimplify_expr (&valist, pre_p, post_p, is_gimple_val, fb_rvalue); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f6ef3ef..4dae1ab 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-05-05 Richard Guenther <rguenther@suse.de> + + PR middle-end/40023 + * gcc.c-torture/compile/pr40023.c: New testcase. + 2009-05-05 Nathan Sidwell <nathan@codesourcery.com> * g++.old-deja/g++.other/overload11.C: Adjust expected errors. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40023.c b/gcc/testsuite/gcc.c-torture/compile/pr40023.c new file mode 100644 index 0000000..93d8f68 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr40023.c @@ -0,0 +1,11 @@ +typedef __builtin_va_list va_list; +typedef struct { + va_list ap; +} ScanfState; +void +GetInt(ScanfState *state, long llval) +{ + *__builtin_va_arg(state->ap,long *) = llval; + __builtin_va_end(state->ap); +} + |