[Lldb-commits] [PATCH] D55571: [ast] CreateParameterDeclaration should use an appropriate DeclContext.

Zachary Turner via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Dec 13 14:27:19 PST 2018

zturner added a comment.

In D55571#1330354 <https://reviews.llvm.org/D55571#1330354>, @friss wrote:

> Zachary, how did you figure out this can be an issue? Does it fix something we should be testing?

Recently I added a `target modules dump ast` command and I've been using it to write tests against (see lldb/lit/SymbolFile/NativePDB for an example of what some of these tests look like).  While experimenting with this command, I noticed that I had some ParmVarDecls under the translation unit decl (e.g. global scope), which obviously is something that isn't possible.  I only tested this with the PDB parser, so I can't confirm whether the same situation could occur int he DWARF parser, but since this is strictly building the AST *after* we've parsed the debug info, I definitely think it would be a problem for DWARF.

So the million dollar question is: What happens when you have function parameters in the AST at global scope?  I think it falls into "undefined behavior" territory - i.e. there's no way to know what clang will do, since you're not supposed to have that situation.

As for as testing, I've found this command extremely useful for writing ast reconstruction tests -- Do a few things in the debugger, run the command, FileCheck the output.  I think "did we construct a valid AST from the debug info?" is a largely unexplored testing surface in LLDB, so this definitely opens up a lot of possibilities for testing on this front.




More information about the lldb-commits mailing list