summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-10 15:45:53 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-10 15:45:53 +0000
commit03abbc5d244919a7f42f483163a72e3cda99fe74 (patch)
treef8a62b9ac946da08fd1b85696236a2dda0edcb5c
parentae9fbf3387396df035a0120ef4ea587b7a5b4b88 (diff)
downloadgcc-03abbc5d244919a7f42f483163a72e3cda99fe74.tar.gz
2011-10-10 Richard Guenther <rguenther@suse.de>
PR middle-end/50389 * gimple-fold.c (gimplify_and_update_call_from_tree): Do not mark symbols for renaming. Append the VUSE to all statements that possibly can have one. * gcc.dg/torture/pr50389.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179757 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimple-fold.c11
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr50389.c15
4 files changed, 31 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 078c997c76a..b3219b50c9f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2011-10-10 Richard Guenther <rguenther@suse.de>
+ PR middle-end/50389
+ * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
+ mark symbols for renaming. Append the VUSE to all statements
+ that possibly can have one.
+
+2011-10-10 Richard Guenther <rguenther@suse.de>
+
* ipa-split.c (pass_split_functions): Add verification TODOs.
(pass_feedback_split_functions): Likewise.
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index b4993fdef92..7df7e694aa2 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -588,13 +588,10 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
}
new_stmt = gsi_stmt (i);
if (gimple_in_ssa_p (cfun))
- {
- find_new_referenced_vars (new_stmt);
- mark_symbols_for_renaming (new_stmt);
- }
- /* If the new statement has a VUSE, update it with exact SSA name we
- know will reach this one. */
- if (gimple_vuse (new_stmt))
+ find_new_referenced_vars (new_stmt);
+ /* If the new statement possibly has a VUSE, update it with exact SSA
+ name we know will reach this one. */
+ if (gimple_has_mem_ops (new_stmt))
{
/* If we've also seen a previous store create a new VDEF for
the latter one, and make that the new reaching VUSE. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7d978b82a37..d3299d8d017 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2011-10-10 Richard Guenther <rguenther@suse.de>
+ PR middle-end/50389
+ * gcc.dg/torture/pr50389.c: New testcase.
+
+2011-10-10 Richard Guenther <rguenther@suse.de>
+
PR middle-end/50195
* gcc.dg/builtins-47.c: Optimize.
diff --git a/gcc/testsuite/gcc.dg/torture/pr50389.c b/gcc/testsuite/gcc.dg/torture/pr50389.c
new file mode 100644
index 00000000000..6d8b095b8ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr50389.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-freorder-blocks -ftracer" } */
+
+extern int data[];
+extern int i;
+
+void
+foo (void)
+{
+ char buf[8];
+ __builtin___memcpy_chk (buf, data, i ? 8 : 4,
+ __builtin_object_size (buf, 0));
+ __builtin___memcpy_chk (buf, data, i ? 8 : 4,
+ __builtin_object_size (buf, 0));
+}