summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/X86/X86AsmPrinter.cpp10
-rw-r--r--llvm/test/CodeGen/X86/dllexport-x86_64.ll4
2 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index 68e136bd776..1dca5689ade 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -670,16 +670,12 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) {
DLLExportedGlobals.push_back(getSymbol(&Global));
for (const auto &Alias : M.aliases()) {
- const GlobalValue *GV = &Alias;
- if (!GV->hasDLLExportStorageClass())
+ if (!Alias.hasDLLExportStorageClass())
continue;
- while (const GlobalAlias *A = dyn_cast<GlobalAlias>(GV))
- GV = A->getAliasee();
-
- if (isa<Function>(GV))
+ if (Alias.getType()->getElementType()->isFunctionTy())
DLLExportedFns.push_back(getSymbol(&Alias));
- else if (isa<GlobalVariable>(GV))
+ else
DLLExportedGlobals.push_back(getSymbol(&Alias));
}
diff --git a/llvm/test/CodeGen/X86/dllexport-x86_64.ll b/llvm/test/CodeGen/X86/dllexport-x86_64.ll
index bd099b04223..1347664c71f 100644
--- a/llvm/test/CodeGen/X86/dllexport-x86_64.ll
+++ b/llvm/test/CodeGen/X86/dllexport-x86_64.ll
@@ -72,6 +72,8 @@ define weak_odr dllexport void @weak1() {
; CHECK: weak_alias = f1
@weak_alias = dllexport alias weak_odr void()* @f1
+@blob = global [6 x i8] c"\B8*\00\00\00\C3", section ".text", align 16
+@blob_alias = dllexport alias i32 (), [6 x i8]* @blob
; CHECK: .section .drectve
; WIN32: /EXPORT:Var1,DATA"
@@ -88,6 +90,7 @@ define weak_odr dllexport void @weak1() {
; WIN32: /EXPORT:alias2"
; WIN32: /EXPORT:alias3"
; WIN32: /EXPORT:weak_alias"
+; WIN32: /EXPORT:blob_alias"
; MINGW: -export:Var1,data"
; MINGW: -export:Var2,data"
; MINGW: -export:Var3,data"
@@ -102,3 +105,4 @@ define weak_odr dllexport void @weak1() {
; MINGW: -export:alias2"
; MINGW: -export:alias3"
; MINGW: -export:weak_alias"
+; MINGW: -export:blob_alias"
OpenPOWER on IntegriCloud