diff options
author | Jeff Law <law@gcc.gnu.org> | 1992-11-23 12:51:33 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1992-11-23 12:51:33 -0700 |
commit | 101e8cc174524b735b09bc2434d39ba197eb0b37 (patch) | |
tree | 2aabeb9b5d29ff84b75365f050c4c0f70737c74b /gcc | |
parent | 275bb158dce4de2138b982f1155b34739e14be8c (diff) | |
download | gcc-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.md | 8 |
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") |