aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2005-02-25 21:12:34 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2005-02-25 16:12:34 -0500
commit736c86ad8305637ba08f5c78a13c749dba13bffc (patch)
treebe437caafd0dbf5b5caf2ef3531ec09c179ee715 /gcc
parent3bf4da728f7ccdea3600cb6ab1465cd0d5e43fe5 (diff)
downloadgcc-736c86ad8305637ba08f5c78a13c749dba13bffc.zip
gcc-736c86ad8305637ba08f5c78a13c749dba13bffc.tar.gz
gcc-736c86ad8305637ba08f5c78a13c749dba13bffc.tar.bz2
re PR tree-optimization/20204 (miscompilation of asm-declared registers)
PR tree-optimization/20204 * tree-into-ssa.c (insert_phi_nodes_for): Do not use REWRITE_THIS_STMT markers on PHI nodes. (rewrite_initialize_block): Likewise. testsuite/ChangeLog PR tree-optimization/20204 * testsuite/gcc.dg/pr20204.c: New test. From-SVN: r95547
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr20204.c34
-rw-r--r--gcc/tree-into-ssa.c6
4 files changed, 47 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3f3b478..b45dc87 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-02-25 Diego Novillo <dnovillo@redhat.com>
+
+ PR tree-optimization/20204
+ * tree-into-ssa.c (insert_phi_nodes_for): Do not use
+ REWRITE_THIS_STMT markers on PHI nodes.
+ (rewrite_initialize_block): Likewise.
+
2005-02-25 Mark Mitchell <mark@codesourcery.com>
* version.c (version_string): Update to 4.1.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 192a460..5210413 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-25 Diego Novillo <dnovillo@redhat.com>
+
+ PR tree-optimization/20204
+ * testsuite/gcc.dg/pr20204.c: New test.
+
2005-02-24 Jakub Jelinek <jakub@redhat.com>
PR target/20196
diff --git a/gcc/testsuite/gcc.dg/pr20204.c b/gcc/testsuite/gcc.dg/pr20204.c
new file mode 100644
index 0000000..ad85af5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr20204.c
@@ -0,0 +1,34 @@
+/* { dg-do run { target i?86-*-* } } */
+/* { dg-options "-O2" } */
+
+void *x (void *pdst, const void *psrc, unsigned int pn)
+{
+ register void *return_dst = pdst;
+ register unsigned char *dst = pdst;
+ register unsigned const char *src = psrc;
+ register int n __asm__ ("ebx") = pn;
+
+ if (src < dst && dst < src + n)
+ {
+ src += n;
+ dst += n;
+ while (n--)
+ *--dst = *--src;
+ return return_dst;
+ }
+
+ while (n >= 16) n--;
+
+ return return_dst;
+}
+extern void abort ();
+extern void exit (int);
+char xx[30] = "abc";
+int main (void)
+{
+ char yy[30] = "aab";
+
+ if (x (xx + 1, xx, 2) != xx + 1 || memcmp (xx, yy, sizeof (yy)) != 0)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index bdc7623..271c1ff 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -591,9 +591,6 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points)
FOR_EACH_EDGE (e, ei, bb->preds)
add_phi_arg (phi, var, e);
}
-
- /* Mark this PHI node as interesting for the rename process. */
- REWRITE_THIS_STMT (phi) = 1;
}
}
@@ -745,8 +742,7 @@ rewrite_initialize_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi))
{
tree result = PHI_RESULT (phi);
- if (REWRITE_THIS_STMT (phi))
- register_new_def (result, &block_defs_stack);
+ register_new_def (result, &block_defs_stack);
}
}