--- gcc/config/vax.md 2018/04/24 17:51:34 1.1.1.1 +++ gcc/config/vax.md 2018/04/24 17:54:16 1.1.1.2 @@ -1465,13 +1465,14 @@ "j%C0 %l1") ; %C0 negates condition ;; Recognize jbs, jlbs, jbc and jlbc instructions. Note that the operand -;; if this insn is SImode in the hardware. However, if it is memory, -;; we use QImode. So we can't allow the memory address to be indexed. +;; of jlbs and jlbc insns are SImode in the hardware. However, if it is +;; memory, we use QImode in the insn. So we can't use those instructions +;; for mode-dependent addresses. (define_insn "" [(set (pc) (if_then_else - (ne (zero_extract:SI (match_operand:QI 0 "reg_or_nxmem_operand" "g,g") + (ne (zero_extract:SI (match_operand:QI 0 "nonimmediate_operand" "rQ,g") (const_int 1) (match_operand:SI 1 "general_operand" "I,g")) (const_int 0)) @@ -1485,7 +1486,7 @@ (define_insn "" [(set (pc) (if_then_else - (eq (zero_extract:SI (match_operand:QI 0 "reg_or_nxmem_operand" "g,g") + (eq (zero_extract:SI (match_operand:QI 0 "nonimmediate_operand" "rQ,g") (const_int 1) (match_operand:SI 1 "general_operand" "I,g")) (const_int 0)) @@ -1533,8 +1534,9 @@ (define_insn "" [(set (pc) (if_then_else - (gt (match_operand:SI 0 "general_operand" "+g") - (const_int 1)) + (gt (plus:SI (match_operand:SI 0 "general_operand" "+g") + (const_int -1)) + (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) (set (match_dup 0) @@ -1546,8 +1548,9 @@ (define_insn "" [(set (pc) (if_then_else - (ge (match_operand:SI 0 "general_operand" "+g") - (const_int 1)) + (ge (plus:SI (match_operand:SI 0 "general_operand" "+g") + (const_int -1)) + (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) (set (match_dup 0)