From e21fde99b6ef87ebc167c42e03169392a2a167a9 Mon Sep 17 00:00:00 2001 From: dnovillo Date: Fri, 25 Feb 2005 21:12:34 +0000 Subject: [PATCH 1/1] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95547 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr20204.c | 34 ++++++++++++++++++++++++++++++++++ gcc/tree-into-ssa.c | 6 +----- 4 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr20204.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f3b478d125..b45dc87babf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-02-25 Diego Novillo + + 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 * version.c (version_string): Update to 4.1. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 192a460cdac..52104138021 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-25 Diego Novillo + + PR tree-optimization/20204 + * testsuite/gcc.dg/pr20204.c: New test. + 2005-02-24 Jakub Jelinek PR target/20196 diff --git a/gcc/testsuite/gcc.dg/pr20204.c b/gcc/testsuite/gcc.dg/pr20204.c new file mode 100644 index 00000000000..ad85af5baa3 --- /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 bdc7623e87f..271c1ff8938 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); } } -- 2.11.0