aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2000-04-27 12:57:35 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2000-04-27 12:57:35 +0000
commit28b6b9b2d3a5141d5e9055ed884d5ddc5e5dc335 (patch)
tree172d402a32e47ad7c82ca5132277d43782e4df26 /gcc/loop.c
parentaf4464eb46fd1fcec3a8f69b320fa069f3d179a0 (diff)
downloadgcc-28b6b9b2d3a5141d5e9055ed884d5ddc5e5dc335.zip
gcc-28b6b9b2d3a5141d5e9055ed884d5ddc5e5dc335.tar.gz
gcc-28b6b9b2d3a5141d5e9055ed884d5ddc5e5dc335.tar.bz2
* loop.c (load_mems) Don't use hard registers for the hoisting.
* unroll.c (unroll_loop): Avoid overflow in the n_iterations calculation; rename const_equiv array in the preconditioning code from loop_unroll to loop_unroll_precondition From-SVN: r33480
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index fe77b6b..02ac5d7 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -9887,7 +9887,13 @@ load_mems (loop)
{
if (CONSTANT_P (equiv->loc))
const_equiv = equiv;
- else if (GET_CODE (equiv->loc) == REG)
+ else if (GET_CODE (equiv->loc) == REG
+ /* Extending hard register lifetimes cuases crash
+ on SRC targets. Doing so on non-SRC is
+ probably also not good idea, since we most
+ probably have pseudoregister equivalence as
+ well. */
+ && REGNO (equiv->loc) >= FIRST_PSEUDO_REGISTER)
best_equiv = equiv;
}
/* Use the constant equivalence if that is cheap enough. */