diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1992-05-19 17:27:34 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1992-05-19 17:27:34 -0700 |
commit | cbc3885de26e5378b74d8f208f5f5e0da2247437 (patch) | |
tree | b0cc42443be689116916103fc24217225e3b3a63 /gcc | |
parent | 2b4bd1bc301c22fc47d685f658a100c04597d041 (diff) | |
download | gcc-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.md | 8 |
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])) |