aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-08-24 17:59:07 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-08-24 17:59:07 +0000
commita666df609a95f9a569b6d09472933ff898bd805d (patch)
tree01e0ebf619815811c0cf1ff97499b72c05541632 /gcc/config
parent762613be3e563106eec05795785bd08d33466d7e (diff)
downloadgcc-a666df609a95f9a569b6d09472933ff898bd805d.zip
gcc-a666df609a95f9a569b6d09472933ff898bd805d.tar.gz
gcc-a666df609a95f9a569b6d09472933ff898bd805d.tar.bz2
builtins.c (expand_cmpstr, [...]): New functions.
gcc/ * builtins.c (expand_cmpstr, expand_cmpstrn): New functions. (expand_builtin_strcmp, expand_builtin_strncmp): Use them. Remove references to HAVE_cmpstr{,n}si and CODE_FOR_cmpstr{,n}si. * config/m32c/blkmov.md (cmpstrsi): Fix predicates of operands 1 and 2. Add predicates for operands 0 and 3. * config/rx/rx.md (cmpstrnsi): Remove force_operand for the length operand. * config/sh/sh.md (cmpstrnsi): Change the length predicate from immediate_operand to nonmemory_operand. From-SVN: r227140
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/m32c/blkmov.md8
-rw-r--r--gcc/config/rx/rx.md2
-rw-r--r--gcc/config/sh/sh.md2
3 files changed, 6 insertions, 6 deletions
diff --git a/gcc/config/m32c/blkmov.md b/gcc/config/m32c/blkmov.md
index 88d0406..02ad345 100644
--- a/gcc/config/m32c/blkmov.md
+++ b/gcc/config/m32c/blkmov.md
@@ -178,10 +178,10 @@
;; 3 = alignment
(define_expand "cmpstrsi"
- [(match_operand:HI 0 "" "")
- (match_operand 1 "ap_operand" "")
- (match_operand 2 "ap_operand" "")
- (match_operand 3 "" "")
+ [(match_operand:HI 0 "register_operand" "")
+ (match_operand 1 "memory_operand" "")
+ (match_operand 2 "memory_operand" "")
+ (match_operand 3 "const_int_operand" "")
]
"TARGET_A24"
"if (m32c_expand_cmpstr(operands)) DONE; FAIL;"
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md
index 8b12475..6faf771 100644
--- a/gcc/config/rx/rx.md
+++ b/gcc/config/rx/rx.md
@@ -2315,7 +2315,7 @@
emit_move_insn (str1, force_operand (XEXP (operands[1], 0), NULL_RTX));
emit_move_insn (str2, force_operand (XEXP (operands[2], 0), NULL_RTX));
- emit_move_insn (len, force_operand (operands[3], NULL_RTX));
+ emit_move_insn (len, operands[3]);
emit_insn (gen_rx_cmpstrn (operands[0], operands[1], operands[2]));
DONE;
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index ad49f72..facce83 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -12731,7 +12731,7 @@ label:
[(set (match_operand:SI 0 "register_operand")
(compare:SI (match_operand:BLK 1 "memory_operand")
(match_operand:BLK 2 "memory_operand")))
- (use (match_operand:SI 3 "immediate_operand"))
+ (use (match_operand:SI 3 "nonmemory_operand"))
(use (match_operand:SI 4 "immediate_operand"))]
"TARGET_SH1 && optimize"
{