From 616cf694edcb0729c2ee8a01f8fb9676e0627eaa Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 15 Nov 2005 14:33:04 +0000 Subject: [PATCH] * loop.c (scan_loop): Do not insert temporaries for hard registers. From-SVN: r107019 --- gcc/ChangeLog | 4 ++++ gcc/loop.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2b22fa98a2..3b723f917eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2005-11-15 Daniel Jacobowitz + + * loop.c (scan_loop): Do not insert temporaries for hard registers. + 2005-11-15 Daniel Jacobowitz * config/arm/lib1funcs.asm (div0) [L_dvmd_lnx]: Call raise instead diff --git a/gcc/loop.c b/gcc/loop.c index 6df63026ab8..9efc84eff93 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -1238,13 +1238,15 @@ scan_loop (struct loop *loop, int flags) - with -Os (this certainly increases size), - if the mode doesn't support copy operations (obviously), - if the source is already a reg (the motion will gain nothing), - - if the source is a legitimate constant (likewise). */ + - if the source is a legitimate constant (likewise), + - if the dest is a hard register (may be unrecognizable). */ else if (insert_temp && (optimize_size || ! can_copy_p (GET_MODE (SET_SRC (set))) || REG_P (SET_SRC (set)) || (CONSTANT_P (SET_SRC (set)) - && LEGITIMATE_CONSTANT_P (SET_SRC (set))))) + && LEGITIMATE_CONSTANT_P (SET_SRC (set))) + || REGNO (SET_DEST (set)) < FIRST_PSEUDO_REGISTER)) ; else if ((tem = loop_invariant_p (loop, src)) && (dependencies == 0 -- 2.30.2