OSDN Git Service

[COFF] Use COFF stubs for extern_weak functions
authorReid Kleckner <rnk@google.com>
Tue, 7 May 2019 23:06:21 +0000 (23:06 +0000)
committerReid Kleckner <rnk@google.com>
Tue, 7 May 2019 23:06:21 +0000 (23:06 +0000)
commit79cb709a8a705dc0a406df2383b64210b801601b
tree90c5969e6cae425164e75d83936db8b0acbde6b7
parent79040e11a599e9c40d76f7a853aa21f34873d452
[COFF] Use COFF stubs for extern_weak functions

Summary:
A COFF stub indirects the reference to a symbol through memory. A
.refptr.$sym global variable pointer is created to refer to $sym.
Typically mingw uses these for external global variable declarations,
but we can use them for weak function declarations as well.

Updates the dso_local classification to add a special case for
extern_weak symbols on COFF in both clang and LLVM.

Fixes PR37598

Reviewers: smeenai, mstorsjo

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D61615

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360207 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/TargetMachine.cpp
lib/Target/X86/X86FastISel.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86Subtarget.cpp
test/CodeGen/X86/extern_weak.ll