]> granicus.if.org Git - clang/commitdiff
Moved generation of the name of the serialized AST file into
authorTed Kremenek <kremenek@apple.com>
Wed, 19 Dec 2007 17:25:59 +0000 (17:25 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 19 Dec 2007 17:25:59 +0000 (17:25 +0000)
CreateASTSerializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45201 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/ASTConsumers.cpp
Driver/ASTConsumers.h
Driver/clang.cpp

index 49bf59b8832d68c745ae3a00d73ee7c4bb93dfe7..184f29a6061fd3f609f1f2c4287d8aaaefaf62f9 100644 (file)
@@ -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);
 }
index 027370f708d8e7472b46fe0b3fd1f82f2e7550f3..05473b155852be7c00abfb718bb2ecb45b335e54 100644 (file)
@@ -37,7 +37,7 @@ ASTConsumer *CreateCodeRewriterTest(Diagnostic &Diags);
 ASTConsumer *CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr, 
                                      const LangOptions &LOpts);
   
-ASTConsumer *CreateASTSerializer(const llvm::sys::Path& FName,
+ASTConsumer *CreateASTSerializer(const std::string& InFile,
                                  Diagnostic &Diags, const LangOptions &LOpts);
 
 } // end clang namespace
index d440aad6a271dcce5ea23ea4ab9971881e6a09a3..8afd71833fd3f7696bbba431d1d20805555d5093 100644 (file)
@@ -922,21 +922,9 @@ static ASTConsumer* CreateASTConsumer(const std::string& InFile,
     case EmitLLVM:
       return CreateLLVMEmitter(Diag, LangOpts);
       
-    case SerializeAST: {
+    case SerializeAST:
       // FIXME: Allow user to tailor where the file is written.
-      // 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 CreateASTSerializer(FName, Diag, LangOpts);
-    }
+      return CreateASTSerializer(InFile, Diag, LangOpts);
       
     case RewriteTest:
       return CreateCodeRewriterTest(Diag);