EricWF created this revision. EricWF added reviewers: rsmith, silvas, manmanren. EricWF added a subscriber: cfe-commits.
When merging definitions with ModulesLocalVisibility enabled it's important to make deleted definitions implicitly inline, otherwise they'll be diagnosed as a redefinition. https://reviews.llvm.org/D26143 Files: lib/Sema/SemaDeclCXX.cpp Index: lib/Sema/SemaDeclCXX.cpp =================================================================== --- lib/Sema/SemaDeclCXX.cpp +++ lib/Sema/SemaDeclCXX.cpp @@ -13870,6 +13870,11 @@ if (Fn->isMain()) Diag(DelLoc, diag::err_deleted_main); + // C++11 [dcl.fct.def.delete]p4: + // A deleted function is implicitly inline. + // NOTE: Modules cannot correctly merge deleted functions unless they are + // inline. + Fn->setImplicitlyInline(); Fn->setDeletedAsWritten(); }
Index: lib/Sema/SemaDeclCXX.cpp =================================================================== --- lib/Sema/SemaDeclCXX.cpp +++ lib/Sema/SemaDeclCXX.cpp @@ -13870,6 +13870,11 @@ if (Fn->isMain()) Diag(DelLoc, diag::err_deleted_main); + // C++11 [dcl.fct.def.delete]p4: + // A deleted function is implicitly inline. + // NOTE: Modules cannot correctly merge deleted functions unless they are + // inline. + Fn->setImplicitlyInline(); Fn->setDeletedAsWritten(); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits