This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG40ad6670138a: [dllexport] odr-use constexpr default args for constructor closures (authored by hans).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D123405/new/ https://reviews.llvm.org/D123405 Files: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp clang/test/CodeGenCXX/dllexport-ctor-closure.cpp Index: clang/test/CodeGenCXX/dllexport-ctor-closure.cpp =================================================================== --- clang/test/CodeGenCXX/dllexport-ctor-closure.cpp +++ clang/test/CodeGenCXX/dllexport-ctor-closure.cpp @@ -88,3 +88,10 @@ // CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"??1HasImplicitDtor1@@QAE@XZ" // CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorClosureOutOfLine@@QAEXXZ" // CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"??1HasImplicitDtor2@@QAE@XZ" + +struct SomeStruct {}; +constexpr SomeStruct kConstexprStruct; +struct __declspec(dllexport) ConstexprDefaultArg { + ConstexprDefaultArg(SomeStruct = kConstexprStruct) {} +}; +// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FConstexprDefaultArg@@QAEXXZ" Index: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp =================================================================== --- clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -821,7 +821,7 @@ for (unsigned I = 0; I != NumParams; ++I) { (void)CheckCXXDefaultArgExpr(Attr->getLocation(), Ctor, Ctor->getParamDecl(I)); - DiscardCleanupsInEvaluationContext(); + CleanupVarDeclMarking(); } }
Index: clang/test/CodeGenCXX/dllexport-ctor-closure.cpp =================================================================== --- clang/test/CodeGenCXX/dllexport-ctor-closure.cpp +++ clang/test/CodeGenCXX/dllexport-ctor-closure.cpp @@ -88,3 +88,10 @@ // CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"??1HasImplicitDtor1@@QAE@XZ" // CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorClosureOutOfLine@@QAEXXZ" // CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"??1HasImplicitDtor2@@QAE@XZ" + +struct SomeStruct {}; +constexpr SomeStruct kConstexprStruct; +struct __declspec(dllexport) ConstexprDefaultArg { + ConstexprDefaultArg(SomeStruct = kConstexprStruct) {} +}; +// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FConstexprDefaultArg@@QAEXXZ" Index: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp =================================================================== --- clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -821,7 +821,7 @@ for (unsigned I = 0; I != NumParams; ++I) { (void)CheckCXXDefaultArgExpr(Attr->getLocation(), Ctor, Ctor->getParamDecl(I)); - DiscardCleanupsInEvaluationContext(); + CleanupVarDeclMarking(); } }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits