Author: adrian Date: Mon Aug 22 17:23:58 2016 New Revision: 279485 URL: http://llvm.org/viewvc/llvm-project?rev=279485&view=rev Log: Module debug info: Don't assert when encountering an incomplete definition in isDefinedInClangModule() and assume that the incomplete definition is not defined in the module.
This broke the -gmodules self host recently. rdar://problem/27894367 Added: cfe/trunk/test/Modules/Inputs/DebugNestedA.h cfe/trunk/test/Modules/Inputs/DebugNestedB.h Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/test/Modules/Inputs/module.map Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=279485&r1=279484&r2=279485&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Aug 22 17:23:58 2016 @@ -1655,7 +1655,8 @@ static bool isDefinedInClangModule(const if (!RD->isExternallyVisible() && RD->getName().empty()) return false; if (auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD)) { - assert(CXXDecl->isCompleteDefinition() && "incomplete record definition"); + if (!CXXDecl->isCompleteDefinition()) + return false; auto TemplateKind = CXXDecl->getTemplateSpecializationKind(); if (TemplateKind != TSK_Undeclared) { // This is a template, check the origin of the first member. Added: cfe/trunk/test/Modules/Inputs/DebugNestedA.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/DebugNestedA.h?rev=279485&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/DebugNestedA.h (added) +++ cfe/trunk/test/Modules/Inputs/DebugNestedA.h Mon Aug 22 17:23:58 2016 @@ -0,0 +1,8 @@ +/* -*- C++ -*- */ +template <typename T> class Base {}; +template <typename T> struct A : public Base<A<T>> { + void f(); +}; + +class F {}; +typedef A<F> AF; Added: cfe/trunk/test/Modules/Inputs/DebugNestedB.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/DebugNestedB.h?rev=279485&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/DebugNestedB.h (added) +++ cfe/trunk/test/Modules/Inputs/DebugNestedB.h Mon Aug 22 17:23:58 2016 @@ -0,0 +1,7 @@ +/* -*- C++ -*- */ +#include "DebugNestedA.h" +class C { + void run(AF &af) { + af.f(); + } +}; Modified: cfe/trunk/test/Modules/Inputs/module.map URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/module.map?rev=279485&r1=279484&r2=279485&view=diff ============================================================================== --- cfe/trunk/test/Modules/Inputs/module.map (original) +++ cfe/trunk/test/Modules/Inputs/module.map Mon Aug 22 17:23:58 2016 @@ -422,3 +422,13 @@ module MacroFabs1 { module DiagOutOfDate { header "DiagOutOfDate.h" } + +module DebugNestedA { + header "DebugNestedA.h" + export * +} + +module DebugNestedB { + header "DebugNestedB.h" + export * +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits