diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-11-11 20:57:23 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-11-11 20:57:23 +0100 |
commit | bad2545327c95d91221ad5ad546b0ee0fc706ef3 (patch) | |
tree | 91a92cdc2750682c8d6499479f8bc9594df60236 /gcc/tree-stdarg.c | |
parent | dd34c087ffe7a798835fb95c7eb3dd68afd08f08 (diff) | |
download | gcc-bad2545327c95d91221ad5ad546b0ee0fc706ef3.zip gcc-bad2545327c95d91221ad5ad546b0ee0fc706ef3.tar.gz gcc-bad2545327c95d91221ad5ad546b0ee0fc706ef3.tar.bz2 |
re PR tree-optimization/51091 (FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump stdarg)
PR tree-optimization/51091
* tree-stdarg.c (execute_optimize_stdarg): Ignore TREE_CLOBBER_P
rhs also in the va_list_simple_ptr case.
From-SVN: r181299
Diffstat (limited to 'gcc/tree-stdarg.c')
-rw-r--r-- | gcc/tree-stdarg.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index ef898ee..9b7a126 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -1,5 +1,5 @@ /* Pass computing data for optimizing stdarg functions. - Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Jakub Jelinek <jakub@redhat.com> @@ -847,8 +847,12 @@ execute_optimize_stdarg (void) if (get_gimple_rhs_class (gimple_assign_rhs_code (stmt)) == GIMPLE_SINGLE_RHS) { + /* Check for ap ={v} {}. */ + if (TREE_CLOBBER_P (rhs)) + continue; + /* Check for tem = ap. */ - if (va_list_ptr_read (&si, rhs, lhs)) + else if (va_list_ptr_read (&si, rhs, lhs)) continue; /* Check for the last insn in: @@ -875,6 +879,7 @@ execute_optimize_stdarg (void) /* Check for ap ={v} {}. */ if (TREE_CLOBBER_P (rhs)) continue; + /* Check for ap[0].field = temp. */ else if (va_list_counter_struct_op (&si, lhs, rhs, true)) continue; |