Skip to content

Commit 7fe7c88

Browse files
author
hjl
committed
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256713 138bc75d-0d04-0410-961f-82ee72b054a4
1 parent 81ac698 commit 7fe7c88

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

gcc/ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2018-01-15 H.J. Lu <[email protected]>
2+
3+
* config/i386/predicates.md (constant_call_address_operand):
4+
Rewrite ix86_indirect_branch_register logic.
5+
(sibcall_insn_operand): Likewise.
6+
17
2018-01-15 H.J. Lu <[email protected]>
28

39
* config/i386/constraints.md (Bs): Replace

gcc/config/i386/predicates.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -710,24 +710,22 @@
710710
(ior (match_test "constant_call_address_operand
711711
(op, mode == VOIDmode ? mode : Pmode)")
712712
(match_operand 0 "call_register_no_elim_operand")
713-
(ior (and (not (match_test "TARGET_X32
714-
|| ix86_indirect_branch_register"))
715-
(match_operand 0 "memory_operand"))
716-
(and (match_test "TARGET_X32 && Pmode == DImode
717-
&& !ix86_indirect_branch_register")
718-
(match_operand 0 "GOT_memory_operand")))))
713+
(and (not (match_test "ix86_indirect_branch_register"))
714+
(ior (and (not (match_test "TARGET_X32"))
715+
(match_operand 0 "memory_operand"))
716+
(and (match_test "TARGET_X32 && Pmode == DImode")
717+
(match_operand 0 "GOT_memory_operand"))))))
719718

720719
;; Similarly, but for tail calls, in which we cannot allow memory references.
721720
(define_special_predicate "sibcall_insn_operand"
722721
(ior (match_test "constant_call_address_operand
723722
(op, mode == VOIDmode ? mode : Pmode)")
724723
(match_operand 0 "register_no_elim_operand")
725-
(ior (and (not (match_test "TARGET_X32
726-
|| ix86_indirect_branch_register"))
727-
(match_operand 0 "sibcall_memory_operand"))
728-
(and (match_test "TARGET_X32 && Pmode == DImode
729-
&& !ix86_indirect_branch_register")
730-
(match_operand 0 "GOT_memory_operand")))))
724+
(and (not (match_test "ix86_indirect_branch_register"))
725+
(ior (and (not (match_test "TARGET_X32"))
726+
(match_operand 0 "sibcall_memory_operand"))
727+
(and (match_test "TARGET_X32 && Pmode == DImode")
728+
(match_operand 0 "GOT_memory_operand"))))))
731729

732730
;; Return true if OP is a 32-bit GOT symbol operand.
733731
(define_predicate "GOT32_symbol_operand"

0 commit comments

Comments
 (0)