From 9b02a95e8022dca224a076d3ab818ee495f70ecb Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Tue, 27 Feb 2007 13:13:26 +0000 Subject: [PATCH] bfin.md (doloop_end): FAIL if counter reg isn't SImode. * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode. From-SVN: r122371 --- gcc/ChangeLog | 4 ++++ gcc/config/bfin/bfin.md | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 838fa3fe0ec..2de3d70b2e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2007-02-27 Bernd Schmidt + + * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode. + 2007-02-27 Andreas Schwab * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi. diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 63a651a5035..6e609e8b37f 100644 --- a/gcc/config/bfin/bfin.md +++ b/gcc/config/bfin/bfin.md @@ -1640,10 +1640,12 @@ (clobber (match_scratch:SI 5 ""))])] "" { + /* The loop optimizer doesn't check the predicates... */ + if (GET_MODE (operands[0]) != SImode) + FAIL; /* 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;