diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-11-02 16:38:18 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-11-02 08:38:18 -0800 |
commit | da1f8963a30010de04639b0732f05f0d60432c1e (patch) | |
tree | 3afcfac413057cd1a8ef952730453df5afa33f91 | |
parent | 8785609eafcadd1d517b1d9976ff28c5ce73dc7d (diff) | |
download | gcc-da1f8963a30010de04639b0732f05f0d60432c1e.zip gcc-da1f8963a30010de04639b0732f05f0d60432c1e.tar.gz gcc-da1f8963a30010de04639b0732f05f0d60432c1e.tar.bz2 |
re PR tree-optimization/16808 (verify_ssa failed: Missing definition for SSA_NAME)
2004-11-02 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/16808
* gcc.c-torture/compile/pr16808.c: New test.
2004-11-02 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/16808
* tree-ssa.c (replace_immediate_uses): If we call fold_stmt, make sure
that the vops get marked for renaming.
From-SVN: r89990
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr16808.c | 38 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 1 |
4 files changed, 50 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3ef271..00dc102 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-02 Andrew Pinski <pinskia@physics.uc.edu> + + PR tree-opt/16808 + * tree-ssa.c (replace_immediate_uses): If we call fold_stmt, make sure + that the vops get marked for renaming. + 2004-11-02 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.md ("movcc"): Set type attribute. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 296b5c6..4fea206 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-11-02 Andrew Pinski <pinskia@physics.uc.edu> + + PR tree-opt/16808 + * gcc.c-torture/compile/pr16808.c: New test. + 2004-11-02 Nathan Sidwell <nathan@codesourcery.com> PR rtl-optimization/17104 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr16808.c b/gcc/testsuite/gcc.c-torture/compile/pr16808.c new file mode 100644 index 0000000..28527de --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr16808.c @@ -0,0 +1,38 @@ +/* We used to ICE as we did not mark a Vop for rename as + we changed a function call to a normal modify statement + while folding exp(0.0); */ + +double exp(double); +void f0(void); +void f(double); +typedef struct Parser { + int x; + char *s; +} Parser; +static double pop(Parser *p) { + if (p->s[0] <= 0) { + f0(); + return 0; + } + --p->x; + return 0; +} +static void evalFactor(Parser *p) { + while (p->x) + f(exp(pop(p))); +} +static void evalTerm(Parser *p) { + while (p->s[0]) + evalFactor(p); +} +static void evalExpression(Parser *p) { + evalTerm(p); + while (p->s[0]) + evalTerm(p); +} +void evalPrimary(Parser *p) { + if (p->s) + return; + evalExpression(p); +} + diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 3ba15ee..8002565 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1124,6 +1124,7 @@ replace_immediate_uses (tree var, tree repl) { tree tmp = stmt; fold_stmt (&tmp); + mark_new_vars = true; if (tmp != stmt) { block_stmt_iterator si = bsi_for_stmt (stmt); |