<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Nov 11, 2016 at 8:13 AM, David Blaikie via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><span class=""><div dir="ltr">My knee-jerk reaction is that this could just as well live in LLDB if there are no other users - though Keno points out he could use it in Julia, so that seems like potentially sufficient interest to demonstrate that it might be a reasonable/reusable abstraction.</div></span></div></div></blockquote><div><br></div><div>I think this functionality should live in the clang codebase. The AST has a surprising number of invariants that are easy to violate. Right now LLDB is super tightly coupled to clang because it has to carefully learn and satisfy those invariants.</div><div><br></div><div>The approach taken in LLDB is to essentially "deserialize" DWARF into ASTs. If we consider DWARF to be a stable serialization of the AST, then the reading logic should live near the writing logic, which is currently in clang/lib/CodeGen/CGDebugInfo.cpp.</div></div></div></div>