llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Tomohiro Kashiwada (kikairoya)

<details>
<summary>Changes</summary>

MinGW-GCC and MinGW-Clang exports these symbols.
Cygwin-GCC also exports them, so Cygwin-Clang should do so.

Some of tests have new DAG pattern because i686-cygwin don't use __thiscall but 
__cdecl for member functions.

This is a prerequisite for resolve 
https://github.com/llvm/llvm-project/issues/135910 .

---

Patch is 153.85 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/138773.diff


21 Files Affected:

- (modified) clang/lib/CodeGen/CodeGenModule.cpp (+1-1) 
- (modified) clang/lib/CodeGen/ItaniumCXXABI.cpp (+2-5) 
- (modified) clang/lib/Sema/SemaDeclCXX.cpp (+2-2) 
- (modified) clang/lib/Sema/SemaTemplate.cpp (+4-5) 
- (modified) clang/test/CodeGen/dllexport.c (+2) 
- (modified) clang/test/CodeGen/dllimport.c (+3) 
- (modified) clang/test/CodeGen/dso-local-executable.c (+3) 
- (modified) clang/test/CodeGenCXX/dllexport-members.cpp (+68-2) 
- (modified) clang/test/CodeGenCXX/dllexport-missing-key.cpp (+1) 
- (modified) clang/test/CodeGenCXX/dllexport.cpp (+27-3) 
- (modified) clang/test/CodeGenCXX/dllimport-members.cpp (+101-3) 
- (modified) clang/test/CodeGenCXX/dllimport-missing-key.cpp (+1) 
- (modified) clang/test/CodeGenCXX/dllimport-rtti.cpp (+5-2) 
- (modified) clang/test/CodeGenCXX/dllimport.cpp (+26-4) 
- (modified) clang/test/CodeGenCXX/dso-local-executable.cpp (+1) 
- (modified) clang/test/CodeGenCXX/mingw-template-dllexport.cpp (+3) 
- (modified) clang/test/CodeGenCXX/rtti-mingw64.cpp (+2) 
- (modified) clang/test/CodeGenCXX/virt-dtor-key.cpp (+6-2) 
- (modified) clang/test/CodeGenCXX/vtable-key-function-ios.cpp (+2) 
- (modified) clang/test/SemaCXX/dllexport.cpp (+2) 
- (modified) clang/test/SemaCXX/dllimport.cpp (+3) 


``````````diff
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp 
b/clang/lib/CodeGen/CodeGenModule.cpp
index b36e078a51f97..869db68d1df86 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -1685,7 +1685,7 @@ static bool shouldAssumeDSOLocal(const CodeGenModule &CGM,
 
   const llvm::Triple &TT = CGM.getTriple();
   const auto &CGOpts = CGM.getCodeGenOpts();
-  if (TT.isWindowsGNUEnvironment()) {
+  if (TT.isOSCygMing()) {
     // In MinGW, variables without DLLImport can still be automatically
     // imported from a DLL by the linker; don't mark variables that
     // potentially could come from another DLL as DSO local.
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp 
b/clang/lib/CodeGen/ItaniumCXXABI.cpp
index 70b53be7e77a3..8826085c596da 100644
--- a/clang/lib/CodeGen/ItaniumCXXABI.cpp
+++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp
@@ -3754,7 +3754,7 @@ static bool ShouldUseExternalRTTIDescriptor(CodeGenModule 
&CGM,
     bool IsDLLImport = RD->hasAttr<DLLImportAttr>();
 
     // Don't import the RTTI but emit it locally.
-    if (CGM.getTriple().isWindowsGNUEnvironment())
+    if (CGM.getTriple().isOSCygMing())
       return false;
 
     if (CGM.getVTables().isVTableExternal(RD)) {
@@ -4041,10 +4041,7 @@ static llvm::GlobalVariable::LinkageTypes 
getTypeInfoLinkage(CodeGenModule &CGM,
           return llvm::GlobalValue::ExternalLinkage;
       // MinGW always uses LinkOnceODRLinkage for type info.
       if (RD->isDynamicClass() &&
-          !CGM.getContext()
-               .getTargetInfo()
-               .getTriple()
-               .isWindowsGNUEnvironment())
+          !CGM.getContext().getTargetInfo().getTriple().isOSCygMing())
         return CGM.getVTableLinkage(RD);
     }
 
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 7cce7ed1fa054..8d8fe26e1ac6e 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -6274,7 +6274,7 @@ static void ReferenceDllExportedMembers(Sema &S, 
CXXRecordDecl *Class) {
     }
   } MarkingDllexportedContext(S, Class, ClassAttr->getLocation());
 
-  if (S.Context.getTargetInfo().getTriple().isWindowsGNUEnvironment())
+  if (S.Context.getTargetInfo().getTriple().isOSCygMing())
     S.MarkVTableUsed(Class->getLocation(), Class, true);
 
   for (Decl *Member : Class->decls()) {
@@ -6576,7 +6576,7 @@ void Sema::checkClassLevelDLLAttribute(CXXRecordDecl 
*Class) {
   // declarations, except in MinGW mode.
   if (ClassExported && !ClassAttr->isInherited() &&
       TSK == TSK_ExplicitInstantiationDeclaration &&
-      !Context.getTargetInfo().getTriple().isWindowsGNUEnvironment()) {
+      !Context.getTargetInfo().getTriple().isOSCygMing()) {
     Class->dropAttr<DLLExportAttr>();
     return;
   }
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 95c7b6f25ddc6..5798bce06df96 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -8938,8 +8938,7 @@ 
Sema::CheckSpecializationInstantiationRedecl(SourceLocation NewLoc,
         // The declaration itself has not actually been instantiated, so it is
         // still okay to specialize it.
         StripImplicitInstantiation(
-            PrevDecl,
-            Context.getTargetInfo().getTriple().isWindowsGNUEnvironment());
+            PrevDecl, Context.getTargetInfo().getTriple().isOSCygMing());
         return false;
       }
       // Fall through
@@ -9806,7 +9805,7 @@ DeclResult Sema::ActOnExplicitInstantiation(
                                        : TSK_ExplicitInstantiationDeclaration;
 
   if (TSK == TSK_ExplicitInstantiationDeclaration &&
-      !Context.getTargetInfo().getTriple().isWindowsGNUEnvironment()) {
+      !Context.getTargetInfo().getTriple().isOSCygMing()) {
     // Check for dllexport class template instantiation declarations,
     // except for MinGW mode.
     for (const ParsedAttr &AL : Attr) {
@@ -9871,7 +9870,7 @@ DeclResult Sema::ActOnExplicitInstantiation(
     = PrevDecl ? PrevDecl->getTemplateSpecializationKind() : TSK_Undeclared;
 
   if (TSK == TSK_ExplicitInstantiationDefinition && PrevDecl != nullptr &&
-      Context.getTargetInfo().getTriple().isWindowsGNUEnvironment()) {
+      Context.getTargetInfo().getTriple().isOSCygMing()) {
     // Check for dllexport class template instantiation definitions in MinGW
     // mode, if a previous declaration of the instantiation was seen.
     for (const ParsedAttr &AL : Attr) {
@@ -10039,7 +10038,7 @@ DeclResult Sema::ActOnExplicitInstantiation(
     // In MinGW mode, export the template instantiation if the declaration
     // was marked dllexport.
     if (PrevDecl_TSK == TSK_ExplicitInstantiationDeclaration &&
-        Context.getTargetInfo().getTriple().isWindowsGNUEnvironment() &&
+        Context.getTargetInfo().getTriple().isOSCygMing() &&
         PrevDecl->hasAttr<DLLExportAttr>()) {
       dllExportImportClassTemplateSpecialization(*this, Def);
     }
diff --git a/clang/test/CodeGen/dllexport.c b/clang/test/CodeGen/dllexport.c
index 4c1143cf5ca48..f64bcb5393005 100644
--- a/clang/test/CodeGen/dllexport.c
+++ b/clang/test/CodeGen/dllexport.c
@@ -2,6 +2,8 @@
 // RUN: %clang_cc1 -triple x86_64-windows-msvc -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck %s
 // RUN: %clang_cc1 -triple i686-windows-gnu    -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck %s
 // RUN: %clang_cc1 -triple x86_64-windows-gnu  -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple i686-pc-cygwin      -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-pc-cygwin    -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck %s
 
 
 
diff --git a/clang/test/CodeGen/dllimport.c b/clang/test/CodeGen/dllimport.c
index 6170c8c4a66a3..1631c6dc56805 100644
--- a/clang/test/CodeGen/dllimport.c
+++ b/clang/test/CodeGen/dllimport.c
@@ -2,8 +2,11 @@
 // RUN: %clang_cc1 -triple x86_64-windows-msvc -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck --check-prefix=CHECK --check-prefix=MS %s
 // RUN: %clang_cc1 -triple i686-windows-gnu    -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck --check-prefix=CHECK --check-prefix=GNU %s
 // RUN: %clang_cc1 -triple x86_64-windows-gnu  -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck --check-prefix=CHECK --check-prefix=GNU %s
+// RUN: %clang_cc1 -triple i686-pc-cygwin      -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck --check-prefix=CHECK --check-prefix=GNU %s
+// RUN: %clang_cc1 -triple x86_64-pc-cygwin    -fms-extensions -emit-llvm 
-std=c11 -O0 -o - %s | FileCheck --check-prefix=CHECK --check-prefix=GNU %s
 // RUN: %clang_cc1 -triple i686-windows-msvc   -fms-extensions -emit-llvm 
-std=c11 -O1 -fno-inline -o - %s | FileCheck --check-prefix=O1 
--check-prefix=MO1 %s
 // RUN: %clang_cc1 -triple i686-windows-gnu    -fms-extensions -emit-llvm 
-std=c11 -O1 -fno-inline -o - %s | FileCheck --check-prefix=O1 
--check-prefix=GO1 %s
+// RUN: %clang_cc1 -triple i686-pc-cygwin      -fms-extensions -emit-llvm 
-std=c11 -O1 -fno-inline -o - %s | FileCheck --check-prefix=O1 
--check-prefix=GO1 %s
 
 #define JOIN2(x, y) x##y
 #define JOIN(x, y) JOIN2(x, y)
diff --git a/clang/test/CodeGen/dso-local-executable.c 
b/clang/test/CodeGen/dso-local-executable.c
index 15575d3927f23..880273df137d7 100644
--- a/clang/test/CodeGen/dso-local-executable.c
+++ b/clang/test/CodeGen/dso-local-executable.c
@@ -12,6 +12,9 @@
 // RUN: %clang_cc1 -triple x86_64-w64-mingw32 -emit-llvm %s -o - | FileCheck 
--check-prefixes=MINGW,MINGW-NATIVE_TLS,MINGW-AUTO-IMPORT %s
 // RUN: %clang_cc1 -triple x86_64-w64-mingw32 -emit-llvm %s -o - 
-fno-auto-import | FileCheck 
--check-prefixes=MINGW,MINGW-NATIVE_TLS,MINGW-NO-AUTO-IMPORT %s
 // RUN: %clang_cc1 -triple x86_64-w64-mingw32 -emit-llvm %s -o - 
-femulated-tls | FileCheck 
--check-prefixes=MINGW,MINGW-EMUTLS,MINGW-AUTO-IMPORT %s
+// RUN: %clang_cc1 -triple x86_64-pc-cygwin   -emit-llvm %s -o - | FileCheck 
--check-prefixes=MINGW,MINGW-NATIVE_TLS,MINGW-AUTO-IMPORT %s
+// RUN: %clang_cc1 -triple x86_64-pc-cygwin   -emit-llvm %s -o - 
-fno-auto-import | FileCheck 
--check-prefixes=MINGW,MINGW-NATIVE_TLS,MINGW-NO-AUTO-IMPORT %s
+// RUN: %clang_cc1 -triple x86_64-pc-cygwin   -emit-llvm %s -o - 
-femulated-tls | FileCheck 
--check-prefixes=MINGW,MINGW-EMUTLS,MINGW-AUTO-IMPORT %s
 // MINGW:      @baz = dso_local global i32 42
 // MINGW-NEXT: @import_var = external dllimport global i32
 // MINGW-NEXT: @weak_bar = extern_weak global i32
diff --git a/clang/test/CodeGenCXX/dllexport-members.cpp 
b/clang/test/CodeGenCXX/dllexport-members.cpp
index e4effa4c72c72..3753050cbf7d5 100644
--- a/clang/test/CodeGenCXX/dllexport-members.cpp
+++ b/clang/test/CodeGenCXX/dllexport-members.cpp
@@ -4,6 +4,8 @@
 // RUN: %clang_cc1 -no-enable-noundef-analysis -triple x86_64-windows-msvc 
-fms-compatibility -fms-compatibility-version=19 -emit-llvm -std=c++1y -O0 -o - 
%s | FileCheck --check-prefix=M64VS2015 %s
 // RUN: %clang_cc1 -no-enable-noundef-analysis -triple i686-windows-gnu        
               -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU 
--check-prefix=G32 %s
 // RUN: %clang_cc1 -no-enable-noundef-analysis -triple x86_64-windows-gnu      
               -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU 
--check-prefix=G64 %s
+// RUN: %clang_cc1 -no-enable-noundef-analysis -triple i686-pc-cygwin          
               -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU 
--check-prefix=C32 %s
+// RUN: %clang_cc1 -no-enable-noundef-analysis -triple x86_64-pc-cygwin        
               -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU 
--check-prefix=G64 %s
 
 // Helper structs to make templates more expressive.
 struct ImplicitInst_Exported {};
@@ -35,12 +37,16 @@ struct ExportMembers {
   // M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@"?normalInlineDecl@ExportMembers@@QAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define weak_odr dso_local dllexport                void 
@"?normalInlineDecl@ExportMembers@@QEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers9normalDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers9normalDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers9normalDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers13normalInclassEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers13normalInclassEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers13normalInclassEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers15normalInlineDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers15normalInlineDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers15normalInlineDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers16normalInlineDeclEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers16normalInlineDeclEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers16normalInlineDeclEv(ptr {{[^,]*}} %this)
   // M32-DAG: define linkonce_odr dso_local       x86_thiscallcc void 
@"?referencedNonExportedInClass@ExportMembers@@QAEXXZ"
   __declspec(dllexport)                void normalDef();
@@ -58,12 +64,16 @@ struct ExportMembers {
   // M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@"?virtualInlineDecl@ExportMembers@@UAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define weak_odr dso_local dllexport                void 
@"?virtualInlineDecl@ExportMembers@@UEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers10virtualDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers10virtualDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers10virtualDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers14virtualInclassEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers14virtualInclassEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers14virtualInclassEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers16virtualInlineDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers16virtualInlineDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers16virtualInlineDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers17virtualInlineDeclEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers17virtualInlineDeclEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers17virtualInlineDeclEv(ptr {{[^,]*}} %this)
   __declspec(dllexport) virtual        void virtualDef();
   __declspec(dllexport) virtual        void virtualInclass() {}
@@ -86,6 +96,7 @@ struct ExportMembers {
   // M32-DAG: define          dso_local dllexport x86_thiscallcc void 
@"?protectedDef@ExportMembers@@IAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define          dso_local dllexport                void 
@"?protectedDef@ExportMembers@@IEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers12protectedDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers12protectedDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers12protectedDefEv(ptr {{[^,]*}} %this)
   // MSC-DAG: define          dso_local dllexport                void 
@"?protectedStaticDef@ExportMembers@@KAXXZ"()
   // GNU-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers18protectedStaticDefEv()
@@ -96,6 +107,7 @@ struct ExportMembers {
   // M32-DAG: define          dso_local dllexport x86_thiscallcc void 
@"?privateDef@ExportMembers@@AAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define          dso_local dllexport                void 
@"?privateDef@ExportMembers@@AEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers10privateDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers10privateDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers10privateDefEv(ptr {{[^,]*}} %this)
   // MSC-DAG: define          dso_local dllexport                void 
@"?privateStaticDef@ExportMembers@@CAXXZ"()
   // GNU-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers16privateStaticDefEv()
@@ -106,6 +118,7 @@ struct ExportMembers {
   // M32-DAG: define          dso_local x86_thiscallcc void 
@"?ignored@ExportMembers@@QAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define          dso_local                void 
@"?ignored@ExportMembers@@QEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local x86_thiscallcc void 
@_ZN13ExportMembers7ignoredEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local                void 
@_ZN13ExportMembers7ignoredEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local                void 
@_ZN13ExportMembers7ignoredEv(ptr {{[^,]*}} %this)
 public:
   void ignored();
@@ -163,12 +176,16 @@ struct ExportMembers::Nested {
   // M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@"?normalInlineDecl@Nested@ExportMembers@@QAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define weak_odr dso_local dllexport                void 
@"?normalInlineDecl@Nested@ExportMembers@@QEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested9normalDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers6Nested9normalDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers6Nested9normalDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested13normalInclassEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested13normalInclassEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested13normalInclassEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested15normalInlineDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested15normalInlineDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested15normalInlineDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested16normalInlineDeclEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested16normalInlineDeclEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested16normalInlineDeclEv(ptr {{[^,]*}} %this)
   __declspec(dllexport)                void normalDef();
   __declspec(dllexport)                void normalInclass() {}
@@ -184,12 +201,16 @@ struct ExportMembers::Nested {
   // M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@"?virtualInlineDecl@Nested@ExportMembers@@UAEXXZ"(ptr {{[^,]*}} %this)
   // M64-DAG: define weak_odr dso_local dllexport                void 
@"?virtualInlineDecl@Nested@ExportMembers@@UEAAXXZ"(ptr {{[^,]*}} %this)
   // G32-DAG: define          dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested10virtualDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers6Nested10virtualDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define          dso_local dllexport                void 
@_ZN13ExportMembers6Nested10virtualDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested14virtualInclassEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested14virtualInclassEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested14virtualInclassEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested16virtualInlineDefEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested16virtualInlineDefEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested16virtualInlineDefEv(ptr {{[^,]*}} %this)
   // G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void 
@_ZN13ExportMembers6Nested17virtualInlineDeclEv(ptr {{[^,]*}} %this)
+  // C32-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested17virtualInlineDeclEv(ptr {{[^,]*}} %this)
   // G64-DAG: define weak_odr dso_local dllexport                void 
@_ZN13ExportMembers6Nested17virtualInlineDeclEv(ptr {{[^,]*}} %this)
   __declspec(dllexport) virtual        void virtualDef();
   __dec...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/138773
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to