[llvm] r346429 - [NativePDB] Higher fidelity reconstruction of AST from Debug Info.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 12 11:01:50 PST 2018


This one specific function, or the patch as a whole? I thought the patch
had pretty good non-unit-test coverage
On Mon, Nov 12, 2018 at 10:36 AM David Blaikie <dblaikie at gmail.com> wrote:

> Could this use/be tested with a unit test, perhaps?
>
> On Thu, Nov 8, 2018 at 10:52 AM Zachary Turner via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: zturner
>> Date: Thu Nov  8 10:50:11 2018
>> New Revision: 346429
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=346429&view=rev
>> Log:
>> [NativePDB] Higher fidelity reconstruction of AST from Debug Info.
>>
>> In order to accurately put a type into the correct location in the AST
>> we construct from debug info, we need to be able to determine what
>> DeclContext (namespace, global, nested class, etc) that it goes into.
>> PDB doesn't contain this mapping.  It does, however, contain the reverse
>> mapping.  That is, for a given class type T, you can determine all
>> classes Q1, Q2, ..., Qn that are nested inside of T.  We need to know,
>> for a given class type Q, what type T is it nested inside of.
>>
>> This patch builds this map as a pre-processing step when we first
>> load the PDB by scanning every type.  Initial tests show that while
>> this can be slow in debug builds of LLDB, it is quite fast in release
>> builds (less than 2 seconds for a ~1GB PDB, and it only needs to happen
>> once).
>>
>> Furthermore, having this pre-processing step in place allows us to
>> repurpose it for building up other kinds of indexing to it down the
>> line.  For the time being, this gives us very accurate reconstruction
>> of the DeclContext hierarchy.
>>
>> Differential Revision: https://reviews.llvm.org/D54216
>>
>> Modified:
>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h
>>
>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h?rev=346429&r1=346428&r2=346429&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h (original)
>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h Thu Nov  8
>> 10:50:11 2018
>> @@ -429,6 +429,10 @@ public:
>>      return (Options & ClassOptions::ForwardReference) !=
>> ClassOptions::None;
>>    }
>>
>> +  bool containsNestedClass() const {
>> +    return (Options & ClassOptions::ContainsNestedClass) !=
>> ClassOptions::None;
>> +  }
>> +
>>    bool isScoped() const {
>>      return (Options & ClassOptions::Scoped) != ClassOptions::None;
>>    }
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181112/cd43173a/attachment.html>


More information about the llvm-commits mailing list