mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 03:50:26 +08:00
Revert:
2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com> PR rtl-opt/37451 * loop-doloop.c (doloop_modify): New argument zero_extend_p and zero extend count after the correction to it is done. (doloop_optimize): Update call to doloop_modify, don't zero extend count before call. 2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com> PR rtl-opt/37782 * loop-doloop.c (doloop_modify): Add from_mode argument that says what mode count is in. (doloop_optimize): Update call to doloop_modify. testsuite: * gcc.c-torture/execute/doloop-1.c, gcc.c-torture/execute/doloop-2.c: New tests. From-SVN: r181929
This commit is contained in:
parent
ce8d58a2d9
commit
5f2e30efbe
@ -1,3 +1,22 @@
|
||||
2011-12-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
Revert:
|
||||
|
||||
2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
|
||||
PR rtl-opt/37451
|
||||
* loop-doloop.c (doloop_modify): New argument zero_extend_p and
|
||||
zero extend count after the correction to it is done.
|
||||
(doloop_optimize): Update call to doloop_modify, don't zero extend
|
||||
count before call.
|
||||
|
||||
2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
|
||||
PR rtl-opt/37782
|
||||
* loop-doloop.c (doloop_modify): Add from_mode argument that says what
|
||||
mode count is in.
|
||||
(doloop_optimize): Update call to doloop_modify.
|
||||
|
||||
2011-12-02 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/47259
|
||||
|
@ -394,14 +394,11 @@ add_test (rtx cond, edge *e, basic_block dest)
|
||||
describes the loop, DESC describes the number of iterations of the
|
||||
loop, and DOLOOP_INSN is the low-overhead looping insn to emit at the
|
||||
end of the loop. CONDITION is the condition separated from the
|
||||
DOLOOP_SEQ. COUNT is the number of iterations of the LOOP.
|
||||
ZERO_EXTEND_P says to zero extend COUNT after the increment of it to
|
||||
word_mode from FROM_MODE. */
|
||||
DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. */
|
||||
|
||||
static void
|
||||
doloop_modify (struct loop *loop, struct niter_desc *desc,
|
||||
rtx doloop_seq, rtx condition, rtx count,
|
||||
bool zero_extend_p, enum machine_mode from_mode)
|
||||
rtx doloop_seq, rtx condition, rtx count)
|
||||
{
|
||||
rtx counter_reg;
|
||||
rtx tmp, noloop = NULL_RTX;
|
||||
@ -475,11 +472,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
|
||||
}
|
||||
|
||||
if (increment_count)
|
||||
count = simplify_gen_binary (PLUS, from_mode, count, const1_rtx);
|
||||
|
||||
if (zero_extend_p)
|
||||
count = simplify_gen_unary (ZERO_EXTEND, word_mode,
|
||||
count, from_mode);
|
||||
count = simplify_gen_binary (PLUS, mode, count, const1_rtx);
|
||||
|
||||
/* Insert initialization of the count register into the loop header. */
|
||||
start_sequence ();
|
||||
@ -615,7 +608,6 @@ doloop_optimize (struct loop *loop)
|
||||
struct niter_desc *desc;
|
||||
unsigned word_mode_size;
|
||||
unsigned HOST_WIDE_INT word_mode_max;
|
||||
bool zero_extend_p = false;
|
||||
|
||||
if (dump_file)
|
||||
fprintf (dump_file, "Doloop: Processing loop %d.\n", loop->num);
|
||||
@ -690,7 +682,8 @@ doloop_optimize (struct loop *loop)
|
||||
{
|
||||
if (word_mode_size > GET_MODE_PRECISION (mode))
|
||||
{
|
||||
zero_extend_p = true;
|
||||
count = simplify_gen_unary (ZERO_EXTEND, word_mode,
|
||||
count, mode);
|
||||
iterations = simplify_gen_unary (ZERO_EXTEND, word_mode,
|
||||
iterations, mode);
|
||||
iterations_max = simplify_gen_unary (ZERO_EXTEND, word_mode,
|
||||
@ -734,8 +727,7 @@ doloop_optimize (struct loop *loop)
|
||||
return false;
|
||||
}
|
||||
|
||||
doloop_modify (loop, desc, doloop_seq, condition, count,
|
||||
zero_extend_p, mode);
|
||||
doloop_modify (loop, desc, doloop_seq, condition, count);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-12-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* gcc.c-torture/execute/doloop-1.c,
|
||||
gcc.c-torture/execute/doloop-2.c: New tests.
|
||||
|
||||
2011-12-02 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/50622
|
||||
|
18
gcc/testsuite/gcc.c-torture/execute/doloop-1.c
Normal file
18
gcc/testsuite/gcc.c-torture/execute/doloop-1.c
Normal file
@ -0,0 +1,18 @@
|
||||
#include <limits.h>
|
||||
|
||||
extern void exit (int);
|
||||
extern void abort (void);
|
||||
|
||||
volatile unsigned int i;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
unsigned char z = 0;
|
||||
|
||||
do ++i;
|
||||
while (--z > 0);
|
||||
if (i != UCHAR_MAX + 1U)
|
||||
abort ();
|
||||
exit (0);
|
||||
}
|
18
gcc/testsuite/gcc.c-torture/execute/doloop-2.c
Normal file
18
gcc/testsuite/gcc.c-torture/execute/doloop-2.c
Normal file
@ -0,0 +1,18 @@
|
||||
#include <limits.h>
|
||||
|
||||
extern void exit (int);
|
||||
extern void abort (void);
|
||||
|
||||
volatile unsigned int i;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
unsigned short z = 0;
|
||||
|
||||
do ++i;
|
||||
while (--z > 0);
|
||||
if (i != USHRT_MAX + 1U)
|
||||
abort ();
|
||||
exit (0);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user