summaryrefslogtreecommitdiff
path: root/gcc/optabs.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-12-27 20:25:01 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-12-27 20:25:01 +0000
commitd1b3a94da1b2834245104caccbb687fbe952ef6b (patch)
treec81211d8e387a783a055d111b21f78b8d8b9b881 /gcc/optabs.c
parent73d35032db290ea5133ab73ed455e00c44e66702 (diff)
downloadgcc-d1b3a94da1b2834245104caccbb687fbe952ef6b.tar.gz
(emit_unop_insn): Don't do -fforce-mem for SIGN_EXTEND.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10872 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r--gcc/optabs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c
index bb1b8398945..cae4c4e9bd0 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -2374,7 +2374,9 @@ emit_unop_insn (icode, target, op0, code)
op0 = protect_from_queue (op0, 0);
- if (flag_force_mem)
+ /* Sign extension from memory is often done specially on RISC
+ machines, so forcing into a register here can pessimize code. */
+ if (flag_force_mem && code != SIGN_EXTEND)
op0 = force_not_mem (op0);
/* Now, if insn does not accept our operands, put them into pseudos. */