aboutsummaryrefslogtreecommitdiff
path: root/Driver/ASTConsumers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Driver/ASTConsumers.cpp')
-rw-r--r--Driver/ASTConsumers.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index 49bf59b883..184f29a606 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -637,8 +637,20 @@ namespace {
} // end anonymous namespace
-ASTConsumer *clang::CreateASTSerializer(const llvm::sys::Path& FName,
+ASTConsumer* clang::CreateASTSerializer(const std::string& InFile,
Diagnostic &Diags,
const LangOptions &Features) {
+
+ // FIXME: This is a hack: "/" separator not portable.
+ std::string::size_type idx = InFile.rfind("/");
+
+ if (idx != std::string::npos && idx == InFile.size()-1)
+ return NULL;
+
+ std::string TargetPrefix( idx == std::string::npos ?
+ InFile : InFile.substr(idx+1));
+
+ llvm::sys::Path FName = llvm::sys::Path((TargetPrefix + ".ast").c_str());
+
return new ASTSerializer(FName, Diags, Features);
}