aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Avila de Espindola <espindola@google.com>2008-05-22 15:49:30 +0000
committerRafael Espindola <espindola@gcc.gnu.org>2008-05-22 15:49:30 +0000
commit4799e6aa58eab27112b27c9ca328f57430f8d1ab (patch)
tree5481a3a93e2e3f1ac5cb585fcb5c216c897259fb
parent5bf6d4abbb211815ea9389ed6c70d4e90530f8a3 (diff)
downloadgcc-4799e6aa58eab27112b27c9ca328f57430f8d1ab.zip
gcc-4799e6aa58eab27112b27c9ca328f57430f8d1ab.tar.gz
gcc-4799e6aa58eab27112b27c9ca328f57430f8d1ab.tar.bz2
see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx sharing.
* see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx sharing. * gcc.c-torture/compile/20080522-1.c: New testcase. From-SVN: r135770
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/see.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20080522-1.c20
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 50754f7..8e6029b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-22 Rafael Espindola <espindola@google.com>
+
+ * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
+ sharing.
+
2008-05-22 H.J. Lu <hongjiu.lu@intel.com>
* defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
diff --git a/gcc/see.c b/gcc/see.c
index 6e5260b..96d7ff5 100644
--- a/gcc/see.c
+++ b/gcc/see.c
@@ -1686,7 +1686,7 @@ see_pre_insert_extensions (struct see_pre_extension_expr **index_map)
edge eg = INDEX_EDGE (edge_list, e);
start_sequence ();
- emit_insn (PATTERN (expr->se_insn));
+ emit_insn (copy_insn (PATTERN (expr->se_insn)));
se_insn = get_insns ();
end_sequence ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e954cd5..2c62a49 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-22 Rafael Espindola <espindola@google.com>
+
+ * gcc.c-torture/compile/20080522-1.c: New testcase.
+
2008-05-22 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/20080522-1.c: New testcase.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20080522-1.c b/gcc/testsuite/gcc.c-torture/compile/20080522-1.c
new file mode 100644
index 0000000..e259843
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20080522-1.c
@@ -0,0 +1,20 @@
+/* { dg-do compile }
+/* { dg-options "-O2 -fsee" } */
+
+int f(const char* ptr, int bar) {
+ return (((const char *)0 - ptr ) & (bar - 1)) == 0;
+}
+
+
+int g(const char* ptr, const char *test, int N, int bar) {
+ if (N == 0) {
+ }
+ else if (N > 0) {
+ int count = 0;
+ while ( count < N) {
+ if (!f(ptr, bar))
+ count++;
+ }
+ }
+ return f(test, bar) ;
+}