Modifications to type handling logic. We no longer

perform recursive type lookups, because these are not
required for full type fidelity.  We also make the
SelectorTable last for the full lifetime of the Clang
compiler; this was the source of many bugs.

llvm-svn: 119835
This commit is contained in:
Sean Callanan
2010-11-19 20:20:02 +00:00
parent 003c6e700b
commit 6abfabff61
4 changed files with 66 additions and 43 deletions

View File

@@ -254,14 +254,14 @@ ClangExpressionParser::ClangExpressionParser(const char *target_triple,
// 6. Most of this we get from the CompilerInstance, but we
// also want to give the context an ExternalASTSource.
SelectorTable selector_table;
m_selector_table.reset(new SelectorTable());
m_builtin_context.reset(new Builtin::Context(m_compiler->getTarget()));
std::auto_ptr<clang::ASTContext> ast_context(new ASTContext(m_compiler->getLangOpts(),
m_compiler->getSourceManager(),
m_compiler->getTarget(),
m_compiler->getPreprocessor().getIdentifierTable(),
selector_table,
*m_selector_table.get(),
*m_builtin_context.get(),
0));