[X86] Fix TC_RETURN selection failure for Win+Thunk combination (#175977)
https://github.com/llvm/llvm-project/pull/158055 added a IsNotWin64CCFunc predicate to these cases for reasons that are not super clear to me, which causes selection failures as this combination is not covered elsewhere. Fixes https://github.com/llvm/llvm-project/issues/175965.
This commit is contained in:
parent
e5999e84b6
commit
2789ad2b79
@ -1381,11 +1381,11 @@ def : Pat<(X86tcret_6regs (load addr:$dst), timm:$off),
|
||||
|
||||
def : Pat<(X86tcret ptr_rc_tailcall:$dst, timm:$off),
|
||||
(INDIRECT_THUNK_TCRETURN64 ptr_rc_tailcall:$dst, timm:$off)>,
|
||||
Requires<[In64BitMode, IsNotWin64CCFunc, UseIndirectThunkCalls]>;
|
||||
Requires<[In64BitMode, UseIndirectThunkCalls]>;
|
||||
|
||||
def : Pat<(X86tcret ptr_rc_tailcall:$dst, timm:$off),
|
||||
(INDIRECT_THUNK_TCRETURN32 ptr_rc_tailcall:$dst, timm:$off)>,
|
||||
Requires<[Not64BitMode, IsNotWin64CCFunc, UseIndirectThunkCalls]>;
|
||||
Requires<[Not64BitMode, UseIndirectThunkCalls]>;
|
||||
|
||||
def : Pat<(X86tcret (i64 tglobaladdr:$dst), timm:$off),
|
||||
(TCRETURNdi64 tglobaladdr:$dst, timm:$off)>,
|
||||
|
||||
19
llvm/test/CodeGen/X86/replace-thunk-tail-win.ll
Normal file
19
llvm/test/CodeGen/X86/replace-thunk-tail-win.ll
Normal file
@ -0,0 +1,19 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
|
||||
; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=64BIT
|
||||
; RUN: llc -mtriple=i686-unknown-linux-gnu < %s | FileCheck %s --check-prefix=32BIT
|
||||
|
||||
define void @test(ptr %g) #0 {
|
||||
; 64BIT-LABEL: test:
|
||||
; 64BIT: # %bb.0:
|
||||
; 64BIT-NEXT: movq %rdi, %r11
|
||||
; 64BIT-NEXT: jmp __x86_indirect_thunk_r11 # TAILCALL
|
||||
;
|
||||
; 32BIT-LABEL: test:
|
||||
; 32BIT: # %bb.0:
|
||||
; 32BIT-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||
; 32BIT-NEXT: jmp __x86_indirect_thunk_eax # TAILCALL
|
||||
tail call void %g()
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { "target-features"="+retpoline-external-thunk" }
|
||||
Loading…
x
Reference in New Issue
Block a user