diff options
author | Diego Novillo <dnovillo@redhat.com> | 2005-02-25 21:12:34 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2005-02-25 16:12:34 -0500 |
commit | 736c86ad8305637ba08f5c78a13c749dba13bffc (patch) | |
tree | be437caafd0dbf5b5caf2ef3531ec09c179ee715 /gcc | |
parent | 3bf4da728f7ccdea3600cb6ab1465cd0d5e43fe5 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr20204.c | 34 | ||||
-rw-r--r-- | gcc/tree-into-ssa.c | 6 |
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); } } |