[Lldb-commits] [PATCH] D63622: [Target] Hoist LanguageRuntime::GetDeclVendor

Jim Ingham via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Jun 21 10:35:14 PDT 2019

jingham added inline comments.

Comment at: source/API/SBTarget.cpp:1854-1859
+          if (vendor->FindDecls(const_typename, /*append*/ true,
+                                /*max_matches*/ 1, decls) > 0) {
+            if (CompilerType type =
+                    ClangASTContext::GetTypeForDecl(decls.front()))
               return LLDB_RECORD_RESULT(SBType(type));
xiaobai wrote:
> jingham wrote:
> > As soon as you start iterating over all language runtimes, I don't think you can use ClangASTContext::GetTypeForDecl, can you?  Not all language runtimes will be backed by a Clang AST.
> In principle, this is wrong. But FindDecl's deals with clang NamedDecl's, so this still makes sense right now. In the future we will need to make DeclVendor more TypeSystem/compiler agnostic.
If that's true, then you should signal the restriction by limiting the iteration over language runtimes to C-family ones.  Like:

     // DeclVendor only works for C Family languages at present.
     if (!Language::LanguageIsCFamily(runtime->GetLanguageType())

Or maybe we need another "LanguageIsBackedByClangAST" check?  That would be more accurate...



More information about the lldb-commits mailing list