aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2020-07-12 21:58:58 +0200
committerHans-Peter Nilsson <hp@axis.com>2020-07-13 10:13:35 +0200
commitf4ac1a7fee8235c3be7660089b0654e6f05e36bb (patch)
treeee8ac3f4b6d8d1072a76bfdc22ee73f0efd2b6a9 /gcc
parent79fcdd2dd9fea53a65e1feaa09f4fb63a4a4af6a (diff)
downloadgcc-f4ac1a7fee8235c3be7660089b0654e6f05e36bb.zip
gcc-f4ac1a7fee8235c3be7660089b0654e6f05e36bb.tar.gz
gcc-f4ac1a7fee8235c3be7660089b0654e6f05e36bb.tar.bz2
cris: Correct output templates in define_subst patterns.
Whoops. This little gem had the effect of making the output operand (0) constraints disappear but not the input operand (1) constraints for define_subst:ed patterns, probably because there's another (match_dup 1) in the output template (not investigated). That went surprisingly unnoticed until I added a pass leaning just a little bit harder on the define_subst:ed patterns and then only by the libgfortran library generating assembly with nominally incorrect syntax. (There was a move to a special register from a general register, and it incorrectly matched a pattern affecting condition codes.) gcc: * config/cris/cris.md ("setnz_subst", "setnz_subst", "setcc_subst"): Use match_dup in output template, not match_operand.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/cris/cris.md6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index c36a540..074f523 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -275,7 +275,7 @@
"reload_completed"
[(set (reg:CC_NZ CRIS_CC0_REGNUM)
(compare:CC_NZ (match_dup 1) (const_int 0)))
- (set (match_operand 0) (match_operand 1))])
+ (set (match_dup 0) (match_dup 1))])
(define_subst_attr "setnzvc" "setnzvc_subst" "" "_setnzvc")
(define_subst_attr "ccnzvc" "setnzvc_subst" "" "_enabled")
@@ -288,7 +288,7 @@
"reload_completed"
[(set (reg:CC_NZVC CRIS_CC0_REGNUM)
(compare:CC_NZVC (match_dup 1) (const_int 0)))
- (set (match_operand 0) (match_operand 1))])
+ (set (match_dup 0) (match_dup 1))])
(define_subst_attr "setcc" "setcc_subst" "" "_setcc")
(define_subst_attr "cccc" "setcc_subst" "" "_enabled")
@@ -301,7 +301,7 @@
"reload_completed"
[(set (reg:CC CRIS_CC0_REGNUM)
(compare:CC (match_dup 1) (const_int 0)))
- (set (match_operand 0) (match_operand 1))])
+ (set (match_dup 0) (match_dup 1))])
;; Operand and operator predicates.