diff options
author | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-13 14:42:16 +0000 |
---|---|---|
committer | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-13 14:42:16 +0000 |
commit | 96d249d8f3cf91cbc288ac1e71ec94dcefd136d7 (patch) | |
tree | 09057ca2cd80f841761f051ea6eb5f45fb5fa167 | |
parent | a2d30e46a2a020f82d6865c910025e218802da3d (diff) | |
download | ppe42-gcc-96d249d8f3cf91cbc288ac1e71ec94dcefd136d7.tar.gz ppe42-gcc-96d249d8f3cf91cbc288ac1e71ec94dcefd136d7.zip |
ChangeLog:
2005-07-13 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/21921
* tree-iterator.c (tsi_link_before): Support the case when
tsi_end_p (tsi) == true.
testsuite/ChangeLog:
2005-07-13 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/21921
* gcc.dg/tree-ssa/pr21921.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101970 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr21921.c | 14 | ||||
-rw-r--r-- | gcc/tree-iterator.c | 8 |
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dd21fc9f55b..b5adb7df155 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-07-13 Paolo Bonzini <bonzini@gnu.org> + + PR tree-optimization/21921 + * tree-iterator.c (tsi_link_before): Support the case when + tsi_end_p (tsi) == true. + 2005-07-12 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimization/22442 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a2c26cee14e..ebc793e978d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-07-13 Paolo Bonzini <bonzini@gnu.org> + + PR tree-optimization/21921 + * gcc.dg/tree-ssa/pr21921.c: New. + 2005-07-12 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimizatio/22442 diff --git a/gcc/testsuite/gcc.dg/pr21921.c b/gcc/testsuite/gcc.dg/pr21921.c new file mode 100644 index 00000000000..d6a8a2a94bf --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr21921.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -funsafe-math-optimizations" } */ + +void +Q (double *s, double h) +{ + int i; + if (h > 1) + h = h - 1; + + for (i = 1; i < 3; i++) + if (s[i] / h > 0) + s[0] = h, s[i] = s[i] / h; +} diff --git a/gcc/tree-iterator.c b/gcc/tree-iterator.c index 7913bdad7c8..3c2acd38ea7 100644 --- a/gcc/tree-iterator.c +++ b/gcc/tree-iterator.c @@ -110,8 +110,11 @@ tsi_link_before (tree_stmt_iterator *i, tree t, enum tsi_iterator_update mode) } else { - gcc_assert (!STATEMENT_LIST_TAIL (i->container)); - STATEMENT_LIST_HEAD (i->container) = head; + head->prev = STATEMENT_LIST_TAIL (i->container); + if (head->prev) + head->prev->next = head; + else + STATEMENT_LIST_HEAD (i->container) = head; STATEMENT_LIST_TAIL (i->container) = tail; } @@ -127,7 +130,6 @@ tsi_link_before (tree_stmt_iterator *i, tree t, enum tsi_iterator_update mode) i->ptr = tail; break; case TSI_SAME_STMT: - gcc_assert (cur); break; } } |