mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
Target/X86/X86FastISel: [PR6275] Fix Win32's dllimport function with fastisel.
"dllimport" function must not be GlobalVariable, but Function. It is enough to check with GlobalValue. test/CodeGen/X86/dll-linkage.ll is updated to check llc -O0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126110 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
58269b9732
commit
d64cfe1506
@ -597,9 +597,13 @@ bool X86FastISel::X86SelectCallAddress(const Value *V, X86AddressMode &AM) {
|
||||
(AM.Base.Reg != 0 || AM.IndexReg != 0))
|
||||
return false;
|
||||
|
||||
// Can't handle TLS or DLLImport.
|
||||
// Can't handle DLLImport.
|
||||
if (GV->hasDLLImportLinkage())
|
||||
return false;
|
||||
|
||||
// Can't handle TLS.
|
||||
if (const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV))
|
||||
if (GVar->isThreadLocal() || GVar->hasDLLImportLinkage())
|
||||
if (GVar->isThreadLocal())
|
||||
return false;
|
||||
|
||||
// Okay, we've committed to selecting this global. Set up the basic address.
|
||||
|
@ -1,9 +1,14 @@
|
||||
; RUN: llc < %s -mtriple=i386-pc-mingw32 | FileCheck %s
|
||||
|
||||
; RUN: llc < %s -mtriple=i386-pc-mingw32 -O0 | FileCheck %s -check-prefix=FAST
|
||||
; PR6275
|
||||
|
||||
declare dllimport void @foo()
|
||||
|
||||
define void @bar() nounwind {
|
||||
; CHECK: calll *__imp__foo
|
||||
; FAST: movl __imp__foo, [[R:%[a-z]{3}]]
|
||||
; FAST: calll *[[R]]
|
||||
call void @foo()
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user