diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-11 22:11:14 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-11 22:11:14 +0000 |
commit | 928e1fdeccff04dfdb588773262c03bb64031431 (patch) | |
tree | 70246a9822502392c9247f5a67c92c151fcc8d78 /clang/lib/Frontend | |
parent | 99c6990457e8e365f0d966602d5ad2f9783bec5c (diff) | |
download | bcm5719-llvm-928e1fdeccff04dfdb588773262c03bb64031431.tar.gz bcm5719-llvm-928e1fdeccff04dfdb588773262c03bb64031431.zip |
[libclang] In ASTUnit::getMainFileName() Invocation may be null because the ASTUnit
came from loading a PCH/module.
llvm-svn: 172259
Diffstat (limited to 'clang/lib/Frontend')
-rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index 242586a9be8..35a9aa4ff00 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -1689,7 +1689,21 @@ void ASTUnit::transferASTDataFromCompilerInstance(CompilerInstance &CI) { } StringRef ASTUnit::getMainFileName() const { - return Invocation->getFrontendOpts().Inputs[0].getFile(); + if (Invocation && !Invocation->getFrontendOpts().Inputs.empty()) { + const FrontendInputFile &Input = Invocation->getFrontendOpts().Inputs[0]; + if (Input.isFile()) + return Input.getFile(); + else + return Input.getBuffer()->getBufferIdentifier(); + } + + if (SourceMgr) { + if (const FileEntry * + FE = SourceMgr->getFileEntryForID(SourceMgr->getMainFileID())) + return FE->getName(); + } + + return StringRef(); } ASTUnit *ASTUnit::create(CompilerInvocation *CI, |