i386: Rewrite ix86_indirect_branch_register logic
Rewrite ix86_indirect_branch_register logic with (and (not (match_test "ix86_indirect_branch_register")) (original condition before r256662)) * config/i386/predicates.md (constant_call_address_operand): Rewrite ix86_indirect_branch_register logic. (sibcall_insn_operand): Likewise. From-SVN: r256713
This commit is contained in:
parent
e71cf74a5d
commit
5ca876c398
|
@ -1,3 +1,9 @@
|
|||
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/predicates.md (constant_call_address_operand):
|
||||
Rewrite ix86_indirect_branch_register logic.
|
||||
(sibcall_insn_operand): Likewise.
|
||||
|
||||
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/constraints.md (Bs): Replace
|
||||
|
|
|
@ -710,24 +710,22 @@
|
|||
(ior (match_test "constant_call_address_operand
|
||||
(op, mode == VOIDmode ? mode : Pmode)")
|
||||
(match_operand 0 "call_register_no_elim_operand")
|
||||
(ior (and (not (match_test "TARGET_X32
|
||||
|| ix86_indirect_branch_register"))
|
||||
(match_operand 0 "memory_operand"))
|
||||
(and (match_test "TARGET_X32 && Pmode == DImode
|
||||
&& !ix86_indirect_branch_register")
|
||||
(match_operand 0 "GOT_memory_operand")))))
|
||||
(and (not (match_test "ix86_indirect_branch_register"))
|
||||
(ior (and (not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "memory_operand"))
|
||||
(and (match_test "TARGET_X32 && Pmode == DImode")
|
||||
(match_operand 0 "GOT_memory_operand"))))))
|
||||
|
||||
;; Similarly, but for tail calls, in which we cannot allow memory references.
|
||||
(define_special_predicate "sibcall_insn_operand"
|
||||
(ior (match_test "constant_call_address_operand
|
||||
(op, mode == VOIDmode ? mode : Pmode)")
|
||||
(match_operand 0 "register_no_elim_operand")
|
||||
(ior (and (not (match_test "TARGET_X32
|
||||
|| ix86_indirect_branch_register"))
|
||||
(match_operand 0 "sibcall_memory_operand"))
|
||||
(and (match_test "TARGET_X32 && Pmode == DImode
|
||||
&& !ix86_indirect_branch_register")
|
||||
(match_operand 0 "GOT_memory_operand")))))
|
||||
(and (not (match_test "ix86_indirect_branch_register"))
|
||||
(ior (and (not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "sibcall_memory_operand"))
|
||||
(and (match_test "TARGET_X32 && Pmode == DImode")
|
||||
(match_operand 0 "GOT_memory_operand"))))))
|
||||
|
||||
;; Return true if OP is a 32-bit GOT symbol operand.
|
||||
(define_predicate "GOT32_symbol_operand"
|
||||
|
|
Loading…
Reference in New Issue