aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-05-19 17:27:34 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-05-19 17:27:34 -0700
commitcbc3885de26e5378b74d8f208f5f5e0da2247437 (patch)
treeb0cc42443be689116916103fc24217225e3b3a63 /gcc
parent2b4bd1bc301c22fc47d685f658a100c04597d041 (diff)
downloadgcc-cbc3885de26e5378b74d8f208f5f5e0da2247437.zip
gcc-cbc3885de26e5378b74d8f208f5f5e0da2247437.tar.gz
gcc-cbc3885de26e5378b74d8f208f5f5e0da2247437.tar.bz2
entered into RCS
From-SVN: r1024
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68k.md8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 017f47e..49da7f1 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -1267,11 +1267,13 @@
;; Patterns to recognize zero-extend insns produced by the combiner.
;; We don't allow both operands in memory, because of aliasing problems.
+;; Explicitly disallow two memory operands via the condition since reloading
+;; of this case will result in worse code than the uncombined patterns.
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=do<>,d<")
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))
@@ -1300,7 +1302,7 @@
(define_insn ""
[(set (match_operand:HI 0 "general_operand" "=do<>,d")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "d,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))
@@ -1340,7 +1342,7 @@
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=do<>,d")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "d,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))