From 7329610dfa494864f38e9d99b4eb97898a5c9480 Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Fri, 30 May 2008 06:29:17 +0000 Subject: [PATCH] Add a --save-temps option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51760 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvmc2/CompilationGraph.cpp | 13 +++++++++++-- tools/llvmc2/CompilationGraph.h | 2 -- tools/llvmc2/doc/LLVMC-Reference.rst | 6 ++++++ tools/llvmc2/llvmc.cpp | 11 ++++++++--- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/tools/llvmc2/CompilationGraph.cpp b/tools/llvmc2/CompilationGraph.cpp index df1f2395654..9cdcac38457 100644 --- a/tools/llvmc2/CompilationGraph.cpp +++ b/tools/llvmc2/CompilationGraph.cpp @@ -139,8 +139,17 @@ void CompilationGraph::insertEdge(const std::string& A, Edge* Edg) { namespace { sys::Path MakeTempFile(const sys::Path& TempDir, const std::string& BaseName, const std::string& Suffix) { - sys::Path Out = TempDir; - Out.appendComponent(BaseName); + sys::Path Out; + + // Make sure we don't end up with path names like '/file.o' if the + // TempDir is empty. + if (TempDir.empty()) { + Out.set(BaseName); + } + else { + Out = TempDir; + Out.appendComponent(BaseName); + } Out.appendSuffix(Suffix); Out.makeUnique(true, NULL); return Out; diff --git a/tools/llvmc2/CompilationGraph.h b/tools/llvmc2/CompilationGraph.h index 7dfe78fd2de..4324c38ab85 100644 --- a/tools/llvmc2/CompilationGraph.h +++ b/tools/llvmc2/CompilationGraph.h @@ -79,8 +79,6 @@ namespace llvmc { { OutEdges.push_back(llvm::IntrusiveRefCntPtr(E)); } // Inward edge counter. Used to implement topological sort. - // TOTHINK: Move the mutable counter back into Tool classes? Makes - // us more const-correct. void IncrInEdges() { ++InEdges; } void DecrInEdges() { --InEdges; } bool HasNoInEdges() const { return InEdges == 0; } diff --git a/tools/llvmc2/doc/LLVMC-Reference.rst b/tools/llvmc2/doc/LLVMC-Reference.rst index f2c5a34bfd6..9cee46c00d9 100644 --- a/tools/llvmc2/doc/LLVMC-Reference.rst +++ b/tools/llvmc2/doc/LLVMC-Reference.rst @@ -76,6 +76,12 @@ configuration files: current directory with the compilation graph description in the Graphviz format. Hidden option, useful for debugging. +* ``--save-temps`` - Write temporary files to the current directory + and do not delete them on exit. Hidden option, useful for debugging. + +* ``--help``, ``--help-hidden``, ``--version`` - These options have + their standard meaning. + Customizing LLVMC: the compilation graph ======================================== diff --git a/tools/llvmc2/llvmc.cpp b/tools/llvmc2/llvmc.cpp index ba2d70a6203..e093439d4ff 100644 --- a/tools/llvmc2/llvmc.cpp +++ b/tools/llvmc2/llvmc.cpp @@ -32,7 +32,6 @@ using namespace llvmc; // Built-in command-line options. // External linkage here is intentional. -// TOFIX: Add a --keep-temps option. // TOFIX: Write a 'driver driver' (easier to do as a separate // executable that drives llvmc2 proper). cl::list InputFilenames(cl::Positional, cl::desc(""), @@ -50,12 +49,17 @@ cl::opt WriteGraph("write-graph", cl::opt ViewGraph("view-graph", cl::desc("Show compilation graph in GhostView"), cl::Hidden); +cl::opt SaveTemps("save-temps", + cl::desc("Keep temporary files"), + cl::Hidden); namespace { /// BuildTargets - A small wrapper for CompilationGraph::Build. int BuildTargets(CompilationGraph& graph) { int ret; - sys::Path tempDir(sys::Path::GetTemporaryDirectory()); + const sys::Path& tempDir = SaveTemps + ? sys::Path("") + : sys::Path(sys::Path::GetTemporaryDirectory()); try { ret = graph.Build(tempDir); @@ -65,7 +69,8 @@ namespace { throw; } - tempDir.eraseFromDisk(true); + if (!SaveTemps) + tempDir.eraseFromDisk(true); return ret; } } -- 2.34.1