summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86AsmPrinter.cpp
diff options
context:
space:
mode:
authorNico Rieck <nico.rieck@gmail.com>2014-01-14 11:55:40 +0000
committerNico Rieck <nico.rieck@gmail.com>2014-01-14 11:55:40 +0000
commit4192acdbc3cafc16b0b59085bd7d7dc8aee2ba3c (patch)
tree506b27e584c700d04125862cc29cfa3516adfe2e /llvm/lib/Target/X86/X86AsmPrinter.cpp
parente43aaf7967915408e5fb4dafed7fb391abdcbbe1 (diff)
downloadbcm5719-llvm-4192acdbc3cafc16b0b59085bd7d7dc8aee2ba3c.tar.gz
bcm5719-llvm-4192acdbc3cafc16b0b59085bd7d7dc8aee2ba3c.zip
Handle dllexport for global aliases
llvm-svn: 199205
Diffstat (limited to 'llvm/lib/Target/X86/X86AsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/X86/X86AsmPrinter.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index ad7d3e0fdca..e6ad2f1d0da 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -658,6 +658,21 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) {
if (I->hasDLLExportStorageClass())
DLLExportedGlobals.push_back(getSymbol(I));
+ for (Module::const_alias_iterator I = M.alias_begin(), E = M.alias_end();
+ I != E; ++I) {
+ const GlobalValue *GV = I;
+ if (!GV->hasDLLExportStorageClass())
+ continue;
+
+ while (const GlobalAlias *A = dyn_cast<GlobalAlias>(GV))
+ GV = A->getAliasedGlobal();
+
+ if (isa<Function>(GV))
+ DLLExportedFns.push_back(getSymbol(I));
+ else if (isa<GlobalVariable>(GV))
+ DLLExportedGlobals.push_back(getSymbol(I));
+ }
+
// Output linker support code for dllexported globals on windows.
if (!DLLExportedGlobals.empty() || !DLLExportedFns.empty()) {
const TargetLoweringObjectFileCOFF &TLOFCOFF =
OpenPOWER on IntegriCloud