On Sun, Jan 14, 2018 at 9:51 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > - (ior (and (not (match_test "TARGET_X32")) > + (ior (and (not (match_test "TARGET_X32 > + || ix86_indirect_branch_thunk_register")) > (match_operand 0 "sibcall_memory_operand")) > - (and (match_test "TARGET_X32 && Pmode == DImode") > + (and (match_test "TARGET_X32 && Pmode == DImode > + && !ix86_indirect_branch_thunk_register") > (match_operand 0 "GOT_memory_operand")))) > > Is this patch just trying to disable the predicate when > ix86_indirect_branch_thunk_register is set? Because this is what this > convoluted logic does.
Yes, we want to disable all indirect branch via memory with -mindirect-branch-register, just like -mx32. We could do #idefine TARGET_INDIRECT_BRANCH_REGISTER \ (TARGER_X32 || ix86_indirect_branch_thunk_register) > While there is some sense for "TARGET_X32 && Pmode == DImode", we try > to use RTX codes as much as possible in constraints.md and > predicates.md. > > Uros. -- H.J.