aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-11-11 20:57:23 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2011-11-11 20:57:23 +0100
commitbad2545327c95d91221ad5ad546b0ee0fc706ef3 (patch)
tree91a92cdc2750682c8d6499479f8bc9594df60236 /gcc
parentdd34c087ffe7a798835fb95c7eb3dd68afd08f08 (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-stdarg.c9
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 60d97d1..40c57d1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2011-11-11 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/51091
+ * tree-stdarg.c (execute_optimize_stdarg): Ignore TREE_CLOBBER_P
+ rhs also in the va_list_simple_ptr case.
+
PR tree-optimization/51058
* tree-vect-slp.c (vect_remove_slp_scalar_calls): New function.
(vect_schedule_slp): Call it.
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;