[PATCH] D70537: [clang] CGDebugInfo asserts `!DT.isNull()` when compiling with debug symbols

kamlesh kumar via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 12 18:52:13 PST 2019


kamleshbhalui added a comment.

In D70537#1765607 <https://reviews.llvm.org/D70537#1765607>, @probinson wrote:

> I guess first I'm confused about why the type would be undeduced in the first place, given that it is actually instantiated.
>  And if undeduced is correct, wouldn't we rather emit these with DW_TAG_unspecified_type?


While emitting the debug info this is the AST (for given testcase), in which static variable `value` is not yet deduced.
and when it tries to unwrap the type it fails.

  |-CXXRecordDecl 0x30dc88 <col:1, col:8> col:8 implicit struct TypeId
  |-VarDecl 0x30dd30 <line:3:5, col:31> col:23 used counter 'int' static inline listinit
  | `-InitListExpr 0x30ddd8 <col:30, col:31> 'int'
  |-VarTemplateDecl 0x30df68 <line:5:5, line:6:50> col:30 identifier
  | |-TemplateTypeParmDecl 0x30de18 <line:5:14> col:25 typename depth 0 index 0 ...
  | |-VarDecl 0x30df00 <line:6:5, col:50> col:30 identifier 'const int':'const int' static inline cinit
  | | `-UnaryOperator 0x30dfe0 <col:43, col:50> 'int' postfix '++'
  | |   `-DeclRefExpr 0x30dfc0 <col:43> 'int' lvalue Var 0x30dd30 'counter' 'int'
  | `-VarTemplateSpecializationDecl 0x341f30 <col:5, col:50> col:30 referenced identifier 'const int':'const int' static inline cinit
  |   |-TemplateArgument pack
  |   | `-TemplateArgument type 'int'
  |   `-UnaryOperator 0x30dfe0 <col:43, col:50> 'int' postfix '++'
  |     `-DeclRefExpr 0x30dfc0 <col:43> 'int' lvalue Var 0x30dd30 'counter' 'int'
  |-VarTemplateDecl 0x30e228 <line:8:5, line:9:56> col:30 value
  | |-TemplateTypeParmDecl 0x30e128 <line:8:14, col:26> col:26 referenced typename depth 0 index 0 ... Args
  | |-VarDecl 0x30e1c0 <line:9:5, col:56> col:30 value 'const auto' static inline cinit
  | | `-UnresolvedLookupExpr 0x30e2f8 <col:38, col:56> '<dependent type>' lvalue (no ADL) = 'identifier' 0x30df68
  | `-VarTemplateSpecializationDecl 0x30e698 <col:5, col:30> col:30 value 'const auto' static inline
  |   `-TemplateArgument pack
  |     `-TemplateArgument type 'int'
  |-VarTemplateSpecializationDecl 0x30e698 <col:5, col:30> col:30 value 'const auto' static inline
  | `-TemplateArgument pack
  |   `-TemplateArgument type 'int'
  `-VarTemplateSpecializationDecl 0x341f30 <line:6:5, col:50> col:30 referenced identifier 'const int':'const int' static inline cinit
    |-TemplateArgument pack
    | `-TemplateArgument type 'int'
    `-UnaryOperator 0x30dfe0 <col:43, col:50> 'int' postfix '++'
      `-DeclRefExpr 0x30dfc0 <col:43> 'int' lvalue Var 0x30dd30 'counter' 'int'
   


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70537/new/

https://reviews.llvm.org/D70537





More information about the cfe-commits mailing list