bfin.md (doloop_end): Fail for loops that can iterate 2^32-1 or more times unless...
* config/bfin/bfin.md (doloop_end): Fail for loops that can iterate 2^32-1 or more times unless flag_unsafe_loop_optimizations. From-SVN: r122262
This commit is contained in:
parent
94217473a5
commit
0a8f8c4572
|
@ -1,3 +1,8 @@
|
|||
2007-02-23 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
|
||||
2^32-1 or more times unless flag_unsafe_loop_optimizations.
|
||||
|
||||
2007-02-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* builtins.c (fold_builtin_logb, fold_builtin_significand): New.
|
||||
|
|
|
@ -1639,7 +1639,16 @@
|
|||
(unspec [(const_int 0)] UNSPEC_LSETUP_END)
|
||||
(clobber (match_scratch:SI 5 ""))])]
|
||||
""
|
||||
{bfin_hardware_loop ();})
|
||||
{
|
||||
/* Due to limitations in the hardware (an initial loop count of 0
|
||||
does not loop 2^32 times) we must avoid to generate a hardware
|
||||
loops when we cannot rule out this case. */
|
||||
|
||||
if (!flag_unsafe_loop_optimizations
|
||||
&& (unsigned HOST_WIDE_INT) INTVAL (operands[2]) >= 0xFFFFFFFF)
|
||||
FAIL;
|
||||
bfin_hardware_loop ();
|
||||
})
|
||||
|
||||
(define_insn "loop_end"
|
||||
[(set (pc)
|
||||
|
|
Loading…
Reference in New Issue