[llvm] r228411 - Don't dllexport declarations

Reid Kleckner reid at kleckner.net
Fri Feb 6 09:59:49 PST 2015


Author: rnk
Date: Fri Feb  6 11:59:49 2015
New Revision: 228411

URL: http://llvm.org/viewvc/llvm-project?rev=228411&view=rev
Log:
Don't dllexport declarations

Fixes PR22488

Modified:
    llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp
    llvm/trunk/test/CodeGen/X86/dllexport.ll

Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=228411&r1=228410&r2=228411&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Fri Feb  6 11:59:49 2015
@@ -695,11 +695,11 @@ void X86AsmPrinter::EmitEndOfAsmFile(Mod
     std::vector<const MCSymbol*> DLLExportedFns, DLLExportedGlobals;
 
     for (const auto &Function : M)
-      if (Function.hasDLLExportStorageClass())
+      if (Function.hasDLLExportStorageClass() && !Function.isDeclaration())
         DLLExportedFns.push_back(getSymbol(&Function));
 
     for (const auto &Global : M.globals())
-      if (Global.hasDLLExportStorageClass())
+      if (Global.hasDLLExportStorageClass() && !Global.isDeclaration())
         DLLExportedGlobals.push_back(getSymbol(&Global));
 
     for (const auto &Alias : M.aliases()) {

Modified: llvm/trunk/test/CodeGen/X86/dllexport.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dllexport.ll?rev=228411&r1=228410&r2=228411&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/dllexport.ll (original)
+++ llvm/trunk/test/CodeGen/X86/dllexport.ll Fri Feb  6 11:59:49 2015
@@ -21,6 +21,8 @@ define dllexport void @f2() unnamed_addr
 	ret void
 }
 
+declare dllexport void @not_defined()
+
 ; CHECK: .globl _stdfun at 0
 define dllexport x86_stdcallcc void @stdfun() nounwind {
 	ret void
@@ -86,7 +88,6 @@ define weak_odr dllexport void @weak1()
 ; CHECK: _weak_alias = _f1
 @weak_alias = weak_odr dllexport alias void()* @f1
 
-
 ; CHECK: .section .drectve
 ; CHECK-CL: " /EXPORT:_Var1,DATA"
 ; CHECK-CL: " /EXPORT:_Var2,DATA"
@@ -95,6 +96,7 @@ define weak_odr dllexport void @weak1()
 ; CHECK-CL: " /EXPORT:_WeakVar2,DATA"
 ; CHECK-CL: " /EXPORT:_f1"
 ; CHECK-CL: " /EXPORT:_f2"
+; CHECK-CL-NOT: not_exported
 ; CHECK-CL: " /EXPORT:_stdfun at 0"
 ; CHECK-CL: " /EXPORT:@fastfun at 0"
 ; CHECK-CL: " /EXPORT:_thisfun"
@@ -112,6 +114,7 @@ define weak_odr dllexport void @weak1()
 ; CHECK-GCC: " -export:WeakVar2,data"
 ; CHECK-GCC: " -export:f1"
 ; CHECK-GCC: " -export:f2"
+; CHECK-CL-NOT: not_exported
 ; CHECK-GCC: " -export:stdfun at 0"
 ; CHECK-GCC: " -export:@fastfun at 0"
 ; CHECK-GCC: " -export:thisfun"





More information about the llvm-commits mailing list