r279485 - Module debug info: Don't assert when encountering an incomplete definition

Adrian Prantl via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 23 08:31:04 PDT 2016


Yes, that's because I forgot to git-add the actual testcase :-)
It came commits after this one.

-- adrian
> On Aug 22, 2016, at 11:00 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> Generally I'd expect a test case to exercise/demonstrate the behavior that was previously hidden behind an assertion. (put another way: "we expect something specific to happen, not just for clang not to assert/crash")
> 
> On Mon, Aug 22, 2016 at 3:32 PM Adrian Prantl via cfe-commits <cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>> wrote:
> Author: adrian
> Date: Mon Aug 22 17:23:58 2016
> New Revision: 279485
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=279485&view=rev <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 <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 <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 <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 <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 at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160823/0aa327bc/attachment-0001.html>


More information about the cfe-commits mailing list