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 /gcc/testsuite | |
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
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr16808.c | 38 |
2 files changed, 43 insertions, 0 deletions
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); +} + |