diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2003-12-18 12:15:37 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2003-12-18 12:15:37 +0000 |
commit | cebf212fa5edc019a992981e7aab39517ac93c3f (patch) | |
tree | 51fe0f4dc22a81daf31e9a158bd8f6610af9ecd0 /gcc | |
parent | 51287c1498c0fad7f7a794e4b170d229ecfce295 (diff) | |
download | gcc-cebf212fa5edc019a992981e7aab39517ac93c3f.zip gcc-cebf212fa5edc019a992981e7aab39517ac93c3f.tar.gz gcc-cebf212fa5edc019a992981e7aab39517ac93c3f.tar.bz2 |
loop.c (move_movables): Handle combination of m->consec...
ChangeLog:
* loop.c (move_movables): Handle combination of m->consec,
m->move_insn_first, and m->insert_temp all nonzero correctly.
testsuite/ChangeLog:
* gcc.dg/20031216-1.c: New test.
From-SVN: r74778
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20031216-1.c | 37 |
4 files changed, 48 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0c3a30..6d2db65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-12-18 Ulrich Weigand <uweigand@de.ibm.com> + + * loop.c (move_movables): Handle combination of m->consec, + m->move_insn_first, and m->insert_temp all nonzero correctly. + 2003-12-18 Kazu Hirata <kazu@cs.umass.edu> * calls.c (load_register_parameters): Don't use @@ -2113,7 +2113,8 @@ move_movables (struct loop *loop, struct loop_movables *movables, /* The SET_SRC might not be invariant, so we must use the REG_EQUAL note. */ start_sequence (); - emit_move_insn (m->set_dest, m->set_src); + emit_move_insn (m->insert_temp ? newreg : m->set_dest, + m->set_src); seq = get_insns (); end_sequence (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d4524f3..33e5eb8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-12-18 Ulrich Weigand <uweigand@de.ibm.com> + + * gcc.dg/20031216-1.c: New test. + 2003-12-18 Giovanni Bajo <giovannibajo@gcc.gnu.org> PR c++/9154 diff --git a/gcc/testsuite/gcc.dg/20031216-1.c b/gcc/testsuite/gcc.dg/20031216-1.c new file mode 100644 index 0000000..d8ee070 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20031216-1.c @@ -0,0 +1,37 @@ +/* This used to abort due to a loop bug on s390*. */ + +/* { dg-do run } */ +/* { dg-options "-O2" } */ +/* { dg-options "-O2 -fPIC" { target s390*-*-* } } */ + +int count = 0; +char *str; + +void test (int flag) +{ + char *p; + + for (;;) + { + if (count > 5) + return; + + p = "test"; + + if (flag) + count++; + + str = p; + } +} + +int main (void) +{ + test (1); + + if (str[0] != 't') + abort (); + + return 0; +} + |