diff options
author | Daniel Jacobowitz <dan@codesourcery.com> | 2005-11-15 14:33:04 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@gcc.gnu.org> | 2005-11-15 14:33:04 +0000 |
commit | 616cf694edcb0729c2ee8a01f8fb9676e0627eaa (patch) | |
tree | 7c37a694ad475aca692ae54a5897d1e3d4de5632 | |
parent | 5d7c0add81c2d9ff338e76bf58dce99f9a0410e8 (diff) | |
download | gcc-616cf694edcb0729c2ee8a01f8fb9676e0627eaa.zip gcc-616cf694edcb0729c2ee8a01f8fb9676e0627eaa.tar.gz gcc-616cf694edcb0729c2ee8a01f8fb9676e0627eaa.tar.bz2 |
* loop.c (scan_loop): Do not insert temporaries for hard registers.
From-SVN: r107019
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/loop.c | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2b22fa..3b723f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2005-11-15 Daniel Jacobowitz <dan@codesourcery.com> + * loop.c (scan_loop): Do not insert temporaries for hard registers. + +2005-11-15 Daniel Jacobowitz <dan@codesourcery.com> + * config/arm/lib1funcs.asm (div0) [L_dvmd_lnx]: Call raise instead of making syscalls. * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define. Set r7 also. @@ -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 |