From: Bernd Schmidt Date: Tue, 27 Feb 2007 13:13:26 +0000 (+0000) Subject: bfin.md (doloop_end): FAIL if counter reg isn't SImode. X-Git-Tag: releases/gcc-4.3.0~6578 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b02a95e8022dca224a076d3ab818ee495f70ecb;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 838fa3fe0ec7..2de3d70b2e84 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 63a651a5035b..6e609e8b37ff 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;