aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>1999-12-17 22:43:43 +0000
committerMichael Hayes <m.hayes@elec.canterbury.ac.nz>1999-12-17 22:43:43 +0000
commit1a159d7d292b793f745007137705e5cf4fc45dd3 (patch)
tree96539a6a6631e67e1630cbed9b9ec04ae7f9ace3
parentb8ed27aadc4d9a14610f32b372fa8ea286ae346c (diff)
* config/c4x/c4x.md (rpts_top, rptb_top): Add clobbers for rs and re.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@31000 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/c4x/c4x.md22
2 files changed, 17 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 923a839ae7d..a94531c4764 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-18 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+
+ * config/c4x/c4x.md (rpts_top, rptb_top): Add clobbers for rs and re.
+
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
diff --git a/gcc/config/c4x/c4x.md b/gcc/config/c4x/c4x.md
index 238a8e65cb1..4f6a955a5de 100644
--- a/gcc/config/c4x/c4x.md
+++ b/gcc/config/c4x/c4x.md
@@ -3414,6 +3414,7 @@
"#"
[(set_attr "type" "multi")])
+
; This can generate invalid stack slot displacements
(define_split
[(set (match_operand:QF 0 "reg_operand" "=f")
@@ -5120,8 +5121,7 @@
(set (match_dup 0)
(plus:QI (match_dup 0)
(const_int -1)))]
- "reload_completed && (TARGET_DB && (find_reg_note (insn, REG_NONNEG, 0)
- || TARGET_LOOP_UNSIGNED))"
+ "reload_completed && TARGET_DB && TARGET_LOOP_UNSIGNED"
"dbu%#\\t%0,%l1"
[(set_attr "type" "db")])
@@ -5136,8 +5136,7 @@
(plus:QI (match_dup 0)
(const_int -1)))
(clobber (reg:CC_NOOV 21))]
- "reload_completed && (TARGET_DB && (find_reg_note (insn, REG_NONNEG, 0)
- || TARGET_LOOP_UNSIGNED))"
+ "reload_completed && TARGET_DB && TARGET_LOOP_UNSIGNED"
[(parallel [(set (pc)
(if_then_else (ge (plus:QI (match_dup 0)
(const_int -1))
@@ -5168,7 +5167,9 @@
;
(define_insn "rptb_top"
[(use (label_ref (match_operand 0 "" "")))
- (use (label_ref (match_operand 1 "" "")))]
+ (use (label_ref (match_operand 1 "" "")))
+ (clobber (reg:QI 25))
+ (clobber (reg:QI 26))]
""
"*
return ! final_sequence && c4x_rptb_rpts_p (insn, operands[0])
@@ -5178,7 +5179,9 @@
(define_insn "rpts_top"
[(unspec [(use (label_ref (match_operand 0 "" "")))
- (use (label_ref (match_operand 1 "" "")))] 2)]
+ (use (label_ref (match_operand 1 "" "")))] 2)
+ (clobber (reg:QI 25))
+ (clobber (reg:QI 26))]
""
"*
return ! final_sequence && c4x_rptb_rpts_p (insn, operands[0])
@@ -5209,7 +5212,7 @@
""
"if (INTVAL (operands[3]) > 1 || ! TARGET_RPTB)
FAIL;
- emit_jump_insn (gen_rptb_init (operands[0]));
+ emit_insn (gen_rptb_init (operands[0]));
DONE;
")
@@ -6904,7 +6907,6 @@
;
; Which moves the bCC condition outside the inner loop for free.
;
-
(define_peephole
[(set (pc) (if_then_else (match_operator 3 "comparison_operator"
[(reg:CC 21) (const_int 0)])
@@ -6920,7 +6922,8 @@
(pc)))
(set (match_dup 0)
(plus:QI (match_dup 0)
- (const_int -1)))])]
+ (const_int -1)))
+ (clobber (reg:CC_NOOV 21))])]
"! c4x_label_conflict (insn, operands[2], operands[1])"
"db%I3\\t%0,%l1\\n\\tb%3\\t%l2"
[(set_attr "type" "multi")])
@@ -6947,6 +6950,7 @@
;
; Peepholes to convert 'call label; rets' into jump label
;
+
(define_peephole
[(parallel [(call (mem:QI (match_operand:QI 0 "call_address_operand" ""))
(match_operand:QI 1 "general_operand" ""))