Do not foward a branch to just after a loop exit before
loop optimization; this broke doloop detection. From-SVN: r57260
This commit is contained in:
parent
6a0225133c
commit
ac19be7eba
@ -1,3 +1,8 @@
|
||||
2002-09-17 Dale Johannesen <dalej@apple.com>
|
||||
* cfgcleanup.c (try_forward_edges): Do not forward a
|
||||
branch to just after a loop exit before loop optimization;
|
||||
this interfered with doloop detection.
|
||||
|
||||
2002-09-17 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/arm/arm.c (output_return_instruction): Do not
|
||||
@ -118,6 +123,7 @@ Tue Sep 17 13:40:13 2002 Nicola Pero <n.pero@mi.flashnet.it>
|
||||
* real.h (real_nan): Return bool.
|
||||
* doc/extend.texi: Document new builtins.
|
||||
|
||||
>>>>>>> 1.15460
|
||||
2002-09-16 Jason Merrill <jason@redhat.com>
|
||||
Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
|
@ -515,6 +515,15 @@ try_forward_edges (mode, b)
|
||||
|
||||
if (GET_CODE (insn) == NOTE)
|
||||
break;
|
||||
|
||||
/* Do not clean up branches to just past the end of a loop
|
||||
at this time; it can mess up the loop optimizer's
|
||||
recognition of some patterns. */
|
||||
|
||||
insn = PREV_INSN (target->head);
|
||||
if (insn && GET_CODE (insn) == NOTE
|
||||
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END)
|
||||
break;
|
||||
}
|
||||
|
||||
counter++;
|
||||
|
18
gcc/testsuite/gcc.dg/doloop-1.c
Normal file
18
gcc/testsuite/gcc.dg/doloop-1.c
Normal file
@ -0,0 +1,18 @@
|
||||
/* Make sure both loops are recognized as doloops.
|
||||
If so, "bdnz" will be generated on ppc; if not,
|
||||
you will get "ble". */
|
||||
|
||||
/* { dg-do compile { target powerpc-*-* } } */
|
||||
/* { dg-options "-O2" } */
|
||||
void foo (int count, char* pca, char* pcb) {
|
||||
int i;
|
||||
if (count > 10)
|
||||
for (i = 0; i < count; ++i)
|
||||
pcb += i;
|
||||
else
|
||||
for (i = 0; i < count; ++i)
|
||||
pca += i;
|
||||
*pca = *pcb;
|
||||
}
|
||||
/* { dg-final { scan-assembler "bdnz" } } */
|
||||
/* { dg-final { scan-assembler-not "blt" } } */
|
Loading…
Reference in New Issue
Block a user