forked from OSchip/llvm-project
Switch ProcessASTInputFile to still use ParseAST.
- Currently this requires us to fake an input file. - This allows Sema to be keep all the logic for how to pull decls out of the external AST source and how to handle things like tentative definitions. llvm-svn: 82432
This commit is contained in:
parent
b7bbfdd9e6
commit
26e37a77c6
|
@ -3,3 +3,10 @@
|
|||
|
||||
// CHECK: module asm "foo"
|
||||
__asm__("foo");
|
||||
|
||||
// CHECK: @g0 = common global i32 0, align 4
|
||||
int g0;
|
||||
|
||||
// CHECK: define i32 @f0()
|
||||
int f0() {
|
||||
}
|
||||
|
|
|
@ -2181,14 +2181,17 @@ static void ProcessASTInputFile(const std::string &InFile, ProgActions PA,
|
|||
return;
|
||||
}
|
||||
|
||||
// Stream the input AST to the consumer.
|
||||
Consumer->Initialize(AST->getASTContext());
|
||||
AST->getASTContext()
|
||||
.getExternalSource()->StartTranslationUnit(Consumer.get());
|
||||
Consumer->HandleTranslationUnit(AST->getASTContext());
|
||||
// Set the main file ID to an empty file.
|
||||
//
|
||||
// FIXME: We probably shouldn't need this, but for now this is the simplest
|
||||
// way to reuse the logic in ParseAST.
|
||||
const char *EmptyStr = "";
|
||||
llvm::MemoryBuffer *SB =
|
||||
llvm::MemoryBuffer::getMemBuffer(EmptyStr, EmptyStr, "<dummy input>");
|
||||
AST->getSourceManager().createMainFileIDForMemBuffer(SB);
|
||||
|
||||
// FIXME: Tentative decls and #pragma weak aren't going to get handled
|
||||
// correctly here.
|
||||
// Stream the input AST to the consumer.
|
||||
ParseAST(PP, Consumer.get(), AST->getASTContext(), Stats);
|
||||
|
||||
// Release the consumer and the AST, in that order since the consumer may
|
||||
// perform actions in its destructor which require the context.
|
||||
|
|
Loading…
Reference in New Issue