Index: config/i386/i386.md =================================================================== --- config/i386/i386.md (revision 235582) +++ config/i386/i386.md (working copy) @@ -17552,20 +17552,6 @@ DONE; }) -;; Use IOR for stack probes, this is shorter. -(define_expand "probe_stack" - [(match_operand 0 "memory_operand")] - "" -{ - rtx (*gen_ior3) (rtx, rtx, rtx); - - gen_ior3 = (GET_MODE (operands[0]) == DImode - ? gen_iordi3 : gen_iorsi3); - - emit_insn (gen_ior3 (operands[0], operands[0], const0_rtx)); - DONE; -}) - (define_insn "adjust_stack_and_probe" [(set (match_operand:P 0 "register_operand" "=r") (unspec_volatile:P [(match_operand:P 1 "register_operand" "0")] @@ -17894,11 +17880,11 @@ ;; Don't do logical operations with memory inputs. (define_peephole2 - [(match_scratch:SI 2 "r") - (parallel [(set (match_operand:SI 0 "register_operand") - (match_operator:SI 3 "arith_or_logical_operator" + [(match_scratch:SWI 2 "") + (parallel [(set (match_operand:SWI 0 "register_operand") + (match_operator:SWI 3 "arith_or_logical_operator" [(match_dup 0) - (match_operand:SI 1 "memory_operand")])) + (match_operand:SWI 1 "memory_operand")])) (clobber (reg:CC FLAGS_REG))])] "!(TARGET_READ_MODIFY || optimize_insn_for_size_p ())" [(set (match_dup 2) (match_dup 1)) @@ -17907,10 +17893,10 @@ (clobber (reg:CC FLAGS_REG))])]) (define_peephole2 - [(match_scratch:SI 2 "r") - (parallel [(set (match_operand:SI 0 "register_operand") - (match_operator:SI 3 "arith_or_logical_operator" - [(match_operand:SI 1 "memory_operand") + [(match_scratch:SWI 2 "") + (parallel [(set (match_operand:SWI 0 "register_operand") + (match_operator:SWI 3 "arith_or_logical_operator" + [(match_operand:SWI 1 "memory_operand") (match_dup 0)])) (clobber (reg:CC FLAGS_REG))])] "!(TARGET_READ_MODIFY || optimize_insn_for_size_p ())" @@ -17962,15 +17948,13 @@ ; the same decoder scheduling characteristics as the original. (define_peephole2 - [(match_scratch:SI 2 "r") - (parallel [(set (match_operand:SI 0 "memory_operand") - (match_operator:SI 3 "arith_or_logical_operator" + [(match_scratch:SWI 2 "") + (parallel [(set (match_operand:SWI 0 "memory_operand") + (match_operator:SWI 3 "arith_or_logical_operator" [(match_dup 0) - (match_operand:SI 1 "nonmemory_operand")])) + (match_operand:SWI 1 "")])) (clobber (reg:CC FLAGS_REG))])] - "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ()) - /* Do not split stack checking probes. */ - && GET_CODE (operands[3]) != IOR && operands[1] != const0_rtx" + "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())" [(set (match_dup 2) (match_dup 0)) (parallel [(set (match_dup 2) (match_op_dup 3 [(match_dup 2) (match_dup 1)])) @@ -17978,15 +17962,13 @@ (set (match_dup 0) (match_dup 2))]) (define_peephole2 - [(match_scratch:SI 2 "r") - (parallel [(set (match_operand:SI 0 "memory_operand") - (match_operator:SI 3 "arith_or_logical_operator" - [(match_operand:SI 1 "nonmemory_operand") + [(match_scratch:SWI 2 "") + (parallel [(set (match_operand:SWI 0 "memory_operand") + (match_operator:SWI 3 "arith_or_logical_operator" + [(match_operand:SWI 1 "") (match_dup 0)])) (clobber (reg:CC FLAGS_REG))])] - "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ()) - /* Do not split stack checking probes. */ - && GET_CODE (operands[3]) != IOR && operands[1] != const0_rtx" + "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())" [(set (match_dup 2) (match_dup 0)) (parallel [(set (match_dup 2) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))