aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1992-11-23 12:51:33 -0700
committerJeff Law <law@gcc.gnu.org>1992-11-23 12:51:33 -0700
commit101e8cc174524b735b09bc2434d39ba197eb0b37 (patch)
tree2aabeb9b5d29ff84b75365f050c4c0f70737c74b /gcc
parent275bb158dce4de2138b982f1155b34739e14be8c (diff)
downloadgcc-101e8cc174524b735b09bc2434d39ba197eb0b37.zip
gcc-101e8cc174524b735b09bc2434d39ba197eb0b37.tar.gz
gcc-101e8cc174524b735b09bc2434d39ba197eb0b37.tar.bz2
pa.md (sh[123]add): Use "nonmemory_operand" instead of "register_operand" as the predicate for the...
* pa.md (sh[123]add): Use "nonmemory_operand" instead of "register_operand" as the predicate for the first operand. From-SVN: r2777
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index e78e86f..1eff359 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -2039,11 +2039,13 @@
[(set_attr "type" "load")
(set_attr "length" "1")])
+;; Using nonmemory_operand works around a bug in reload. For 2.4 fix
+;; reload and use register_operand instead.
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r")
(const_int 2))
- (match_operand:SI 1 "register_operand" "r")))]
+ (match_operand:SI 1 "nonmemory_operand" "r")))]
""
"sh1add %2,%1,%0")
@@ -2051,7 +2053,7 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r")
(const_int 4))
- (match_operand:SI 1 "register_operand" "r")))]
+ (match_operand:SI 1 "nonmemory_operand" "r")))]
""
"sh2add %2,%1,%0")
@@ -2059,7 +2061,7 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r")
(const_int 8))
- (match_operand:SI 1 "register_operand" "r")))]
+ (match_operand:SI 1 "nonmemory_operand" "r")))]
""
"sh3add %2,%1,%0")