[llvm] r346429 - [NativePDB] Higher fidelity reconstruction of AST from Debug Info.
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 12 11:03:57 PST 2018
This is, 'technically', a separate patch in some sense from the LLD part -
changes to LLVM usually merit tests in LLVM to ensure they work/don't
regress/etc without needing to checkout & test other subprojects (like lld).
On Mon, Nov 12, 2018 at 11:02 AM Zachary Turner <zturner at google.com> wrote:
> 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/f949f5a7/attachment.html>
More information about the llvm-commits
mailing list