r284288 - Sema: honour dllexport in itanium more faithfully

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 14 15:25:46 PDT 2016


Author: compnerd
Date: Fri Oct 14 17:25:46 2016
New Revision: 284288

URL: http://llvm.org/viewvc/llvm-project?rev=284288&view=rev
Log:
Sema: honour dllexport in itanium more faithfully

Although the itanium environment uses the itanium layout for C++, treat the
dllexport semantics more similarly to the MSVC specification.  This preserves
the existing behaviour for the use of the itanium ABI on non-windows-itanium
environments.  Export the inline definitions too.

Added:
    cfe/trunk/test/CodeGenCXX/windows-itanium-dllexport.cpp
Modified:
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp

Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=284288&r1=284287&r2=284288&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Fri Oct 14 17:25:46 2016
@@ -5546,7 +5546,8 @@ void Sema::checkClassLevelDLLAttribute(C
 
       if (MD->isInlined()) {
         // MinGW does not import or export inline methods.
-        if (!Context.getTargetInfo().getCXXABI().isMicrosoft())
+        if (!Context.getTargetInfo().getCXXABI().isMicrosoft() &&
+            !Context.getTargetInfo().getTriple().isWindowsItaniumEnvironment())
           continue;
 
         // MSVC versions before 2015 don't export the move assignment operators

Added: cfe/trunk/test/CodeGenCXX/windows-itanium-dllexport.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-itanium-dllexport.cpp?rev=284288&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenCXX/windows-itanium-dllexport.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/windows-itanium-dllexport.cpp Fri Oct 14 17:25:46 2016
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -emit-llvm -triple i686-windows-itanium -fdeclspec %s -o - | FileCheck %s
+
+struct __declspec(dllexport) s {
+  void f() {}
+};
+
+// CHECK: define {{.*}} dllexport {{.*}} @_ZN1saSERKS_
+// CHECK: define {{.*}} dllexport {{.*}} @_ZN1s1fEv
+




More information about the cfe-commits mailing list