diff options
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/windows-itanium-dllexport.cpp | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index b04bad2e879..93e626f7d32 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -5546,7 +5546,8 @@ void Sema::checkClassLevelDLLAttribute(CXXRecordDecl *Class) { 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 diff --git a/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp b/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp new file mode 100644 index 00000000000..934c6a29618 --- /dev/null +++ b/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp @@ -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 + |