[llvm-commits] [llvm] r50722 - in /llvm/trunk: tools/llvmc2/Action.cpp tools/llvmc2/Action.h tools/llvmc2/AutoGenerated.cpp tools/llvmc2/AutoGenerated.h tools/llvmc2/CompilationGraph.cpp tools/llvmc2/CompilationGraph.h tools/llvmc2/Core.cpp tools/llvmc2/Core.h tools/llvmc2/Makefile tools/llvmc2/Tool.cpp tools/llvmc2/Tool.h tools/llvmc2/Tools.cpp tools/llvmc2/Tools.h tools/llvmc2/Utility.cpp tools/llvmc2/Utility.h tools/llvmc2/llvmc.cpp tools/llvmc2/llvmcc.cpp utils/TableGen/LLVMCCConfigurationEmitter.cpp
Tanya Lattner
lattner at apple.com
Tue May 6 10:42:27 PDT 2008
Please add doxygen style comments (///) to all functions and class
member variables.
-Tanya
On May 6, 2008, at 9:34 AM, Mikhail Glushenkov wrote:
> Author: foldr
> Date: Tue May 6 11:34:12 2008
> New Revision: 50722
>
> URL: http://llvm.org/viewvc/llvm-project?rev=50722&view=rev
> Log:
> Code reorg
>
> Added:
> llvm/trunk/tools/llvmc2/Action.cpp
> llvm/trunk/tools/llvmc2/Action.h
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Tools.h
> llvm/trunk/tools/llvmc2/AutoGenerated.cpp
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Tools.cpp
> llvm/trunk/tools/llvmc2/AutoGenerated.h
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Tools.h
> llvm/trunk/tools/llvmc2/CompilationGraph.cpp
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Core.cpp
> llvm/trunk/tools/llvmc2/CompilationGraph.h
> llvm/trunk/tools/llvmc2/Tool.cpp
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Tools.cpp
> llvm/trunk/tools/llvmc2/Tool.h
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/Core.h
> llvm/trunk/tools/llvmc2/llvmc.cpp
> - copied, changed from r50718, llvm/trunk/tools/llvmc2/
> llvmcc.cpp
> Removed:
> llvm/trunk/tools/llvmc2/Core.cpp
> llvm/trunk/tools/llvmc2/Core.h
> llvm/trunk/tools/llvmc2/Tools.cpp
> llvm/trunk/tools/llvmc2/Tools.h
> llvm/trunk/tools/llvmc2/Utility.cpp
> llvm/trunk/tools/llvmc2/Utility.h
> llvm/trunk/tools/llvmc2/llvmcc.cpp
> Modified:
> llvm/trunk/tools/llvmc2/Makefile
> llvm/trunk/utils/TableGen/LLVMCCConfigurationEmitter.cpp
>
> Added: llvm/trunk/tools/llvmc2/Action.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Action.cpp?rev=50722&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Action.cpp (added)
> +++ llvm/trunk/tools/llvmc2/Action.cpp Tue May 6 11:34:12 2008
> @@ -0,0 +1,58 @@
> +//===--- Tools.h - The LLVM Compiler Driver ---------------------
> *- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open
> +// Source License. See LICENSE.TXT for details.
> +//
> +//
> ===-------------------------------------------------------------------
> ---===//
> +//
> +// Action class - implementation and auxiliary functions.
> +//
> +//
> ===-------------------------------------------------------------------
> ---===//
> +
> +#include "Action.h"
> +
> +#include "llvm/Support/CommandLine.h"
> +#include "llvm/System/Program.h"
> +
> +#include <iostream>
> +#include <stdexcept>
> +
> +using namespace llvm;
> +
> +extern cl::opt<bool> VerboseMode;
> +
> +namespace {
> + int ExecuteProgram(const std::string& name,
> + const std::vector<std::string>& args) {
> + sys::Path prog = sys::Program::FindProgramByName(name);
> +
> + if (prog.isEmpty())
> + throw std::runtime_error("Can't find program '" + name + "'");
> + if (!prog.canExecute())
> + throw std::runtime_error("Program '" + name + "' is not
> executable.");
> +
> + // Invoke the program
> + std::vector<const char*> argv((args.size()+2));
> + argv[0] = name.c_str();
> + for (unsigned i = 1; i <= args.size(); ++i)
> + argv[i] = args[i-1].c_str();
> + argv[args.size()+1] = 0; // null terminate list.
> +
> + return sys::Program::ExecuteAndWait(prog, &argv[0]);
> + }
> +
> + void print_string (const std::string& str) {
> + std::cerr << str << ' ';
> + }
> +}
> +
> +int llvmcc::Action::Execute() {
> + if (VerboseMode) {
> + std::cerr << Command_ << " ";
> + std::for_each(Args_.begin(), Args_.end(), print_string);
> + std::cerr << '\n';
> + }
> + return ExecuteProgram(Command_, Args_);
> +}
>
> Copied: llvm/trunk/tools/llvmc2/Action.h (from r50718, llvm/trunk/
> tools/llvmc2/Tools.h)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Action.h?p2=llvm/trunk/tools/llvmc2/Action.h&p1=llvm/trunk/tools/
> llvmc2/Tools.h&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.h (original)
> +++ llvm/trunk/tools/llvmc2/Action.h Tue May 6 11:34:12 2008
> @@ -7,20 +7,30 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Auto-generated tool descriptions.
> +// Action - encapsulates a single shell command.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#ifndef LLVM_TOOLS_LLVMCC_TOOLS_H
> -#define LLVM_TOOLS_LLVMCC_TOOLS_H
> +#ifndef LLVM_TOOLS_LLVMC2_ACTION_H
> +#define LLVM_TOOLS_LLVMC2_ACTION_H
>
> -#include "Core.h"
> +#include <string>
> +#include <vector>
>
> namespace llvmcc {
>
> - void PopulateLanguageMap(LanguageMap& language_map);
> - void PopulateCompilationGraph(CompilationGraph& tools);
> + class Action {
> + std::string Command_;
> + std::vector<std::string> Args_;
> + public:
> + Action (std::string const& C,
> + std::vector<std::string> const& A)
> + : Command_(C), Args_(A)
> + {}
> +
> + int Execute();
> + };
>
> }
>
> -#endif //LLVM_TOOLS_LLVMCC_TOOLS_H
> +#endif // LLVM_TOOLS_LLVMC2_ACTION_H
>
> Copied: llvm/trunk/tools/llvmc2/AutoGenerated.cpp (from r50718,
> llvm/trunk/tools/llvmc2/Tools.cpp)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> AutoGenerated.cpp?p2=llvm/trunk/tools/llvmc2/
> AutoGenerated.cpp&p1=llvm/trunk/tools/llvmc2/
> Tools.cpp&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.cpp (original)
> +++ llvm/trunk/tools/llvmc2/AutoGenerated.cpp Tue May 6 11:34:12 2008
> @@ -7,22 +7,20 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Auto-generated tool descriptions.
> +// Auto-generated tool descriptions - implementation.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#include "Tools.h"
> -#include "Core.h"
> +#include "AutoGenerated.h"
> +#include "CompilationGraph.h"
> +#include "Tool.h"
>
> -#include "llvm/ADT/IntrusiveRefCntPtr.h"
> #include "llvm/Support/CommandLine.h"
>
> #include <stdexcept>
> -#include <string>
> -#include <vector>
>
> using namespace llvm;
> using namespace llvmcc;
>
> -// Include the auto-generated file
> -#include "Tools.inc"
> +// The auto-generated file
> +#include "AutoGenerated.inc"
>
> Copied: llvm/trunk/tools/llvmc2/AutoGenerated.h (from r50718, llvm/
> trunk/tools/llvmc2/Tools.h)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> AutoGenerated.h?p2=llvm/trunk/tools/llvmc2/AutoGenerated.h&p1=llvm/
> trunk/tools/llvmc2/Tools.h&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.h (original)
> +++ llvm/trunk/tools/llvmc2/AutoGenerated.h Tue May 6 11:34:12 2008
> @@ -1,4 +1,4 @@
> -//===--- Tools.h - The LLVM Compiler Driver ---------------------
> *- C++ -*-===//
> +//===--- Tools.cpp - The LLVM Compiler Driver -------------------
> *- C++ -*-===//
> //
> // The LLVM Compiler Infrastructure
> //
> @@ -7,20 +7,24 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Auto-generated tool descriptions.
> +// Auto-generated tool descriptions - public interface.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#ifndef LLVM_TOOLS_LLVMCC_TOOLS_H
> -#define LLVM_TOOLS_LLVMCC_TOOLS_H
> +#ifndef LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
> +#define LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
>
> -#include "Core.h"
> +#include "llvm/ADT/StringMap.h"
> +
> +#include <string>
>
> namespace llvmcc {
>
> + typedef llvm::StringMap<std::string> LanguageMap;
> + class CompilationGraph;
> +
> void PopulateLanguageMap(LanguageMap& language_map);
> void PopulateCompilationGraph(CompilationGraph& tools);
> -
> }
>
> -#endif //LLVM_TOOLS_LLVMCC_TOOLS_H
> +#endif // LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
>
> Copied: llvm/trunk/tools/llvmc2/CompilationGraph.cpp (from r50718,
> llvm/trunk/tools/llvmc2/Core.cpp)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> CompilationGraph.cpp?p2=llvm/trunk/tools/llvmc2/
> CompilationGraph.cpp&p1=llvm/trunk/tools/llvmc2/
> Core.cpp&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Core.cpp (original)
> +++ llvm/trunk/tools/llvmc2/CompilationGraph.cpp Tue May 6
> 11:34:12 2008
> @@ -1,4 +1,4 @@
> -//===--- Core.cpp - The LLVM Compiler Driver --------------------
> *- C++ -*-===//
> +//===--- CompilationGraph.cpp - The LLVM Compiler Driver --------
> *- C++ -*-===//
> //
> // The LLVM Compiler Infrastructure
> //
> @@ -7,42 +7,21 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Core driver abstractions.
> +// Compilation graph - implementation.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#include "Core.h"
> -#include "Utility.h"
> +#include "CompilationGraph.h"
>
> -#include "llvm/ADT/STLExtras.h"
> -#include "llvm/ADT/StringExtras.h"
> #include "llvm/Support/CommandLine.h"
> +#include "llvm/ADT/STLExtras.h"
>
> -#include <algorithm>
> -#include <iostream>
> #include <stdexcept>
>
> using namespace llvm;
> -using namespace llvmcc;
>
> extern cl::list<std::string> InputFilenames;
> extern cl::opt<std::string> OutputFilename;
> -extern cl::opt<bool> VerboseMode;
> -
> -namespace {
> - void print_string (const std::string& str) {
> - std::cerr << str << ' ';
> - }
> -}
> -
> -int llvmcc::Action::Execute() {
> - if (VerboseMode) {
> - std::cerr << Command_ << " ";
> - std::for_each(Args_.begin(), Args_.end(), print_string);
> - std::cerr << '\n';
> - }
> - return ExecuteProgram(Command_, Args_);
> -}
>
> int llvmcc::CompilationGraph::Build (const sys::Path& tempDir)
> const {
> sys::Path In(InputFilenames.at(0)), Out;
> @@ -107,9 +86,3 @@
>
> return 0;
> }
> -
> -void llvmcc::Tool::UnpackValues (const std::string& from,
> - std::vector<std::string>& to)
> const {
> - SplitString(from, to, ",");
> -}
> -
>
> Added: llvm/trunk/tools/llvmc2/CompilationGraph.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> CompilationGraph.h?rev=50722&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/CompilationGraph.h (added)
> +++ llvm/trunk/tools/llvmc2/CompilationGraph.h Tue May 6 11:34:12
> 2008
> @@ -0,0 +1,36 @@
> +//===--- CompilationGraph.h - The LLVM Compiler Driver ----------
> *- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open
> +// Source License. See LICENSE.TXT for details.
> +//
> +//
> ===-------------------------------------------------------------------
> ---===//
> +//
> +// Compilation graph - definition.
> +//
> +//
> ===-------------------------------------------------------------------
> ---===//
> +
> +#ifndef LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
> +#define LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
> +
> +#include "AutoGenerated.h"
> +#include "Tool.h"
> +
> +#include "llvm/ADT/StringMap.h"
> +#include "llvm/System/Path.h"
> +
> +namespace llvmcc {
> +
> + typedef std::vector<llvm::IntrusiveRefCntPtr<Tool> > ToolChain;
> + typedef llvm::StringMap<ToolChain> ToolChainMap;
> +
> + struct CompilationGraph {
> + ToolChainMap ToolChains;
> + LanguageMap ExtsToLangs;
> +
> + int Build(llvm::sys::Path const& tempDir) const;
> + };
> +}
> +
> +#endif // LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
>
> Removed: llvm/trunk/tools/llvmc2/Core.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Core.cpp?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Core.cpp (original)
> +++ llvm/trunk/tools/llvmc2/Core.cpp (removed)
> @@ -1,115 +0,0 @@
> -//===--- Core.cpp - The LLVM Compiler Driver --------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Core driver abstractions.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#include "Core.h"
> -#include "Utility.h"
> -
> -#include "llvm/ADT/STLExtras.h"
> -#include "llvm/ADT/StringExtras.h"
> -#include "llvm/Support/CommandLine.h"
> -
> -#include <algorithm>
> -#include <iostream>
> -#include <stdexcept>
> -
> -using namespace llvm;
> -using namespace llvmcc;
> -
> -extern cl::list<std::string> InputFilenames;
> -extern cl::opt<std::string> OutputFilename;
> -extern cl::opt<bool> VerboseMode;
> -
> -namespace {
> - void print_string (const std::string& str) {
> - std::cerr << str << ' ';
> - }
> -}
> -
> -int llvmcc::Action::Execute() {
> - if (VerboseMode) {
> - std::cerr << Command_ << " ";
> - std::for_each(Args_.begin(), Args_.end(), print_string);
> - std::cerr << '\n';
> - }
> - return ExecuteProgram(Command_, Args_);
> -}
> -
> -int llvmcc::CompilationGraph::Build (const sys::Path& tempDir)
> const {
> - sys::Path In(InputFilenames.at(0)), Out;
> -
> - // Find out which language corresponds to the suffix of the
> first input file
> - LanguageMap::const_iterator Lang = ExtsToLangs.find(In.getSuffix
> ());
> - if (Lang == ExtsToLangs.end())
> - throw std::runtime_error("Unknown suffix!");
> -
> - // Find the toolchain corresponding to this language
> - ToolChainMap::const_iterator ToolsIt = ToolChains.find(Lang-
> >second);
> - if (ToolsIt == ToolChains.end())
> - throw std::runtime_error("Unknown language!");
> - ToolChain Tools = ToolsIt->second;
> -
> - PathVector JoinList;
> -
> - for (cl::list<std::string>::const_iterator B =
> InputFilenames.begin(),
> - E = InputFilenames.end(); B != E; ++B) {
> - In = sys::Path(*B);
> -
> - // Pass input file through the toolchain
> - for (ToolChain::const_iterator B = Tools.begin(), E = Tools.end
> ();
> - B != E; ++B) {
> -
> - const Tool* CurTool = B->getPtr();
> -
> - // Is this the last step in the chain?
> - if (llvm::next(B) == E || CurTool->IsLast()) {
> - JoinList.push_back(In);
> - break;
> - }
> - else {
> - Out = tempDir;
> - Out.appendComponent(In.getBasename());
> - Out.appendSuffix(CurTool->OutputSuffix());
> - Out.makeUnique(true, NULL);
> - Out.eraseFromDisk();
> - }
> -
> - if (CurTool->GenerateAction(In, Out).Execute() != 0)
> - throw std::runtime_error("Tool returned error code!");
> -
> - In = Out; Out.clear();
> - }
> - }
> -
> - // Pass .o files to linker
> - const Tool* JoinNode = (--Tools.end())->getPtr();
> -
> - // If the final output name is empty, set it to "a.out"
> - if (!OutputFilename.empty()) {
> - Out = sys::Path(OutputFilename);
> - }
> - else {
> - Out = sys::Path("a");
> - Out.appendSuffix(JoinNode->OutputSuffix());
> - }
> -
> - if (JoinNode->GenerateAction(JoinList, Out).Execute() != 0)
> - throw std::runtime_error("Tool returned error code!");
> -
> - return 0;
> -}
> -
> -void llvmcc::Tool::UnpackValues (const std::string& from,
> - std::vector<std::string>& to)
> const {
> - SplitString(from, to, ",");
> -}
> -
>
> Removed: llvm/trunk/tools/llvmc2/Core.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Core.h?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Core.h (original)
> +++ llvm/trunk/tools/llvmc2/Core.h (removed)
> @@ -1,83 +0,0 @@
> -//===--- Core.h - The LLVM Compiler Driver ----------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Core driver abstractions.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#ifndef LLVM_TOOLS_LLVMCC_CORE_H
> -#define LLVM_TOOLS_LLVMCC_CORE_H
> -
> -#include "Utility.h"
> -
> -#include "llvm/ADT/IntrusiveRefCntPtr.h"
> -#include "llvm/ADT/StringMap.h"
> -#include "llvm/System/Path.h"
> -
> -#include <stdexcept>
> -#include <string>
> -#include <vector>
> -
> -// Core functionality
> -
> -namespace llvmcc {
> -
> - typedef std::vector<llvm::sys::Path> PathVector;
> - typedef llvm::StringMap<std::string> LanguageMap;
> -
> - class Action {
> - std::string Command_;
> - std::vector<std::string> Args_;
> - public:
> - Action (std::string const& C,
> - std::vector<std::string> const& A)
> - : Command_(C), Args_(A)
> - {}
> -
> - int Execute();
> - };
> -
> - class Tool : public llvm::RefCountedBaseVPTR<Tool> {
> - public:
> - virtual Action GenerateAction (PathVector const& inFiles,
> - llvm::sys::Path const& outFile)
> const = 0;
> -
> - virtual Action GenerateAction (llvm::sys::Path const& inFile,
> - llvm::sys::Path const& outFile)
> const = 0;
> -
> - virtual std::string Name() const = 0;
> - virtual std::string InputLanguage() const = 0;
> - virtual std::string OutputLanguage() const = 0;
> - virtual std::string OutputSuffix() const = 0;
> -
> - virtual bool IsLast() const = 0;
> - virtual bool IsJoin() const = 0;
> -
> - // Helper function that is called by the auto-generated code
> - // Splits strings of the form ",-foo,-bar,-baz"
> - // TOFIX: find a better name
> - void UnpackValues (std::string const& from,
> - std::vector<std::string>& to) const;
> -
> - virtual ~Tool()
> - {}
> - };
> -
> - typedef std::vector<llvm::IntrusiveRefCntPtr<Tool> > ToolChain;
> - typedef llvm::StringMap<ToolChain> ToolChainMap;
> -
> - struct CompilationGraph {
> - ToolChainMap ToolChains;
> - LanguageMap ExtsToLangs;
> -
> - int Build(llvm::sys::Path const& tempDir) const;
> - };
> -}
> -
> -#endif // LLVM_TOOLS_LLVMCC_CORE_H
>
> Modified: llvm/trunk/tools/llvmc2/Makefile
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Makefile?rev=50722&r1=50721&r2=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Makefile (original)
> +++ llvm/trunk/tools/llvmc2/Makefile Tue May 6 11:34:12 2008
> @@ -8,7 +8,7 @@
>
> ##===-----------------------------------------------------------------
> -----===##
> LEVEL = ../..
> TOOLNAME = llvmc2
> -BUILT_SOURCES = Tools.inc
> +BUILT_SOURCES = AutoGenerated.inc
> LINK_COMPONENTS = support system
> REQUIRES_EH := 1
>
> @@ -23,10 +23,10 @@
>
> # TOFIX: integrate this part into Makefile.rules?
> # The degree of horrorshowness in that file is too much for me atm.
> -$(ObjDir)/Tools.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir
> +$(ObjDir)/AutoGenerated.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir
> $(Echo) "Building LLVMCC configuration library with tblgen"
> $(Verb) $(TableGen) -gen-llvmcc -o $(call SYSPATH, $@) $<
>
> -Tools.inc : $(ObjDir)/Tools.inc.tmp
> +AutoGenerated.inc : $(ObjDir)/AutoGenerated.inc.tmp
> $(Verb) $(CMP) -s $@ $< || $(CP) $< $@
>
>
> Copied: llvm/trunk/tools/llvmc2/Tool.cpp (from r50718, llvm/trunk/
> tools/llvmc2/Tools.cpp)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Tool.cpp?p2=llvm/trunk/tools/llvmc2/Tool.cpp&p1=llvm/trunk/tools/
> llvmc2/Tools.cpp&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.cpp (original)
> +++ llvm/trunk/tools/llvmc2/Tool.cpp Tue May 6 11:34:12 2008
> @@ -7,22 +7,15 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Auto-generated tool descriptions.
> +// Tool abstract base class - implementation of the auxiliary
> functions.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#include "Tools.h"
> -#include "Core.h"
> +#include "Tool.h"
>
> -#include "llvm/ADT/IntrusiveRefCntPtr.h"
> -#include "llvm/Support/CommandLine.h"
> +#include "llvm/ADT/StringExtras.h"
>
> -#include <stdexcept>
> -#include <string>
> -#include <vector>
> -
> -using namespace llvm;
> -using namespace llvmcc;
> -
> -// Include the auto-generated file
> -#include "Tools.inc"
> +void llvmcc::Tool::UnpackValues (const std::string& from,
> + std::vector<std::string>& to) {
> + llvm::SplitString(from, to, ",");
> +}
>
> Copied: llvm/trunk/tools/llvmc2/Tool.h (from r50718, llvm/trunk/
> tools/llvmc2/Core.h)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Tool.h?p2=llvm/trunk/tools/llvmc2/Tool.h&p1=llvm/trunk/tools/llvmc2/
> Core.h&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Core.h (original)
> +++ llvm/trunk/tools/llvmc2/Tool.h Tue May 6 11:34:12 2008
> @@ -1,4 +1,4 @@
> -//===--- Core.h - The LLVM Compiler Driver ----------------------
> *- C++ -*-===//
> +//===--- Tools.h - The LLVM Compiler Driver ---------------------
> *- C++ -*-===//
> //
> // The LLVM Compiler Infrastructure
> //
> @@ -7,41 +7,24 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
> //
> -// Core driver abstractions.
> +// Tool abstract base class - an interface to tool descriptions.
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#ifndef LLVM_TOOLS_LLVMCC_CORE_H
> -#define LLVM_TOOLS_LLVMCC_CORE_H
> +#ifndef LLVM_TOOLS_LLVMC2_TOOL_H
> +#define LLVM_TOOLS_LLVMC2_TOOL_H
>
> -#include "Utility.h"
> +#include "Action.h"
>
> #include "llvm/ADT/IntrusiveRefCntPtr.h"
> -#include "llvm/ADT/StringMap.h"
> #include "llvm/System/Path.h"
>
> -#include <stdexcept>
> #include <string>
> #include <vector>
>
> -// Core functionality
> -
> namespace llvmcc {
>
> typedef std::vector<llvm::sys::Path> PathVector;
> - typedef llvm::StringMap<std::string> LanguageMap;
> -
> - class Action {
> - std::string Command_;
> - std::vector<std::string> Args_;
> - public:
> - Action (std::string const& C,
> - std::vector<std::string> const& A)
> - : Command_(C), Args_(A)
> - {}
> -
> - int Execute();
> - };
>
> class Tool : public llvm::RefCountedBaseVPTR<Tool> {
> public:
> @@ -62,22 +45,13 @@
> // Helper function that is called by the auto-generated code
> // Splits strings of the form ",-foo,-bar,-baz"
> // TOFIX: find a better name
> - void UnpackValues (std::string const& from,
> - std::vector<std::string>& to) const;
> + static void UnpackValues (std::string const& from,
> + std::vector<std::string>& to);
>
> virtual ~Tool()
> {}
> };
>
> - typedef std::vector<llvm::IntrusiveRefCntPtr<Tool> > ToolChain;
> - typedef llvm::StringMap<ToolChain> ToolChainMap;
> -
> - struct CompilationGraph {
> - ToolChainMap ToolChains;
> - LanguageMap ExtsToLangs;
> -
> - int Build(llvm::sys::Path const& tempDir) const;
> - };
> }
>
> -#endif // LLVM_TOOLS_LLVMCC_CORE_H
> +#endif //LLVM_TOOLS_LLVMC2_TOOL_H
>
> Removed: llvm/trunk/tools/llvmc2/Tools.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Tools.cpp?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.cpp (original)
> +++ llvm/trunk/tools/llvmc2/Tools.cpp (removed)
> @@ -1,28 +0,0 @@
> -//===--- Tools.cpp - The LLVM Compiler Driver -------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Auto-generated tool descriptions.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#include "Tools.h"
> -#include "Core.h"
> -
> -#include "llvm/ADT/IntrusiveRefCntPtr.h"
> -#include "llvm/Support/CommandLine.h"
> -
> -#include <stdexcept>
> -#include <string>
> -#include <vector>
> -
> -using namespace llvm;
> -using namespace llvmcc;
> -
> -// Include the auto-generated file
> -#include "Tools.inc"
>
> Removed: llvm/trunk/tools/llvmc2/Tools.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Tools.h?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Tools.h (original)
> +++ llvm/trunk/tools/llvmc2/Tools.h (removed)
> @@ -1,26 +0,0 @@
> -//===--- Tools.h - The LLVM Compiler Driver ---------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Auto-generated tool descriptions.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#ifndef LLVM_TOOLS_LLVMCC_TOOLS_H
> -#define LLVM_TOOLS_LLVMCC_TOOLS_H
> -
> -#include "Core.h"
> -
> -namespace llvmcc {
> -
> - void PopulateLanguageMap(LanguageMap& language_map);
> - void PopulateCompilationGraph(CompilationGraph& tools);
> -
> -}
> -
> -#endif //LLVM_TOOLS_LLVMCC_TOOLS_H
>
> Removed: llvm/trunk/tools/llvmc2/Utility.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Utility.cpp?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Utility.cpp (original)
> +++ llvm/trunk/tools/llvmc2/Utility.cpp (removed)
> @@ -1,39 +0,0 @@
> -//===--- Utility.cpp - The LLVM Compiler Driver -----------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Various helper and utility functions - implementation.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#include "Utility.h"
> -
> -#include "llvm/System/Program.h"
> -
> -#include <stdexcept>
> -
> -using namespace llvm;
> -
> -int llvmcc::ExecuteProgram(const std::string& name,
> - const std::vector<std::string>& args) {
> - sys::Path prog = sys::Program::FindProgramByName(name);
> -
> - if (prog.isEmpty())
> - throw std::runtime_error("Can't find program '" + name + "'");
> - if (!prog.canExecute())
> - throw std::runtime_error("Program '" + name + "' is not
> executable.");
> -
> - // Invoke the program
> - std::vector<const char*> argv((args.size()+2));
> - argv[0] = name.c_str();
> - for (unsigned i = 1; i <= args.size(); ++i)
> - argv[i] = args[i-1].c_str();
> - argv[args.size()+1] = 0; // null terminate list.
> -
> - return sys::Program::ExecuteAndWait(prog, &argv[0]);
> -}
>
> Removed: llvm/trunk/tools/llvmc2/Utility.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> Utility.h?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/Utility.h (original)
> +++ llvm/trunk/tools/llvmc2/Utility.h (removed)
> @@ -1,27 +0,0 @@
> -//===--- Utility.h - The LLVM Compiler Driver -------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// Various helper and utility functions.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#ifndef LLVM_TOOLS_LLVMCC_UTILITY_H
> -#define LLVM_TOOLS_LLVMCC_UTILITY_H
> -
> -#include <string>
> -#include <vector>
> -
> -namespace llvmcc {
> -
> - int ExecuteProgram (const std::string& name,
> - const std::vector<std::string>& arguments);
> -
> -}
> -
> -#endif // LLVM_TOOLS_LLVMCC_UTILITY_H
>
> Copied: llvm/trunk/tools/llvmc2/llvmc.cpp (from r50718, llvm/trunk/
> tools/llvmc2/llvmcc.cpp)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> llvmc.cpp?p2=llvm/trunk/tools/llvmc2/llvmc.cpp&p1=llvm/trunk/tools/
> llvmc2/llvmcc.cpp&r1=50718&r2=50722&rev=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/llvmcc.cpp (original)
> +++ llvm/trunk/tools/llvmc2/llvmc.cpp Tue May 6 11:34:12 2008
> @@ -14,9 +14,8 @@
> //
> //
> ===-------------------------------------------------------------------
> ---===//
>
> -#include "Core.h"
> -#include "Utility.h"
> -#include "Tools.h"
> +#include "CompilationGraph.h"
> +#include "Tool.h"
>
> #include "llvm/System/Path.h"
> #include "llvm/Support/CommandLine.h"
> @@ -25,11 +24,11 @@
> #include <stdexcept>
> #include <string>
>
> -using namespace llvm;
> +namespace cl = llvm::cl;
> +namespace sys = llvm::sys;
> using namespace llvmcc;
>
> -// These variables are also used in Core.cpp,
> -// so they should have external linkage.
> +// External linkage here is intentional.
> cl::list<std::string> InputFilenames(cl::Positional,
> cl::desc("<input file>"),
> cl::OneOrMore);
> cl::opt<std::string> OutputFilename("o", cl::desc("Output file
> name"),
>
> Removed: llvm/trunk/tools/llvmc2/llvmcc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/
> llvmcc.cpp?rev=50721&view=auto
>
> ======================================================================
> ========
> --- llvm/trunk/tools/llvmc2/llvmcc.cpp (original)
> +++ llvm/trunk/tools/llvmc2/llvmcc.cpp (removed)
> @@ -1,73 +0,0 @@
> -//===--- llvmcc.cpp - The LLVM Compiler Driver ------------------
> *- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open
> -// Source License. See LICENSE.TXT for details.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -//
> -// This tool provides a single point of access to the LLVM
> -// compilation tools. It has many options. To discover the options
> -// supported please refer to the tools' manual page or run the tool
> -// with the --help option.
> -//
> -//
> ===-------------------------------------------------------------------
> ---===//
> -
> -#include "Core.h"
> -#include "Utility.h"
> -#include "Tools.h"
> -
> -#include "llvm/System/Path.h"
> -#include "llvm/Support/CommandLine.h"
> -
> -#include <iostream>
> -#include <stdexcept>
> -#include <string>
> -
> -using namespace llvm;
> -using namespace llvmcc;
> -
> -// These variables are also used in Core.cpp,
> -// so they should have external linkage.
> -cl::list<std::string> InputFilenames(cl::Positional,
> - cl::desc("<input file>"),
> cl::OneOrMore);
> -cl::opt<std::string> OutputFilename("o", cl::desc("Output file
> name"),
> - cl::value_desc("file"));
> -cl::opt<bool> VerboseMode("v", cl::desc("Enable verbose mode"));
> -
> -
> -namespace {
> - int BuildTargets(const CompilationGraph& graph) {
> - int ret;
> - sys::Path tempDir(sys::Path::GetTemporaryDirectory());
> -
> - try {
> - ret = graph.Build(tempDir);
> - }
> - catch(...) {
> - tempDir.eraseFromDisk(true);
> - throw;
> - }
> -
> - tempDir.eraseFromDisk(true);
> - return ret;
> - }
> -}
> -
> -int main(int argc, char** argv) {
> - try {
> - CompilationGraph graph;
> -
> - cl::ParseCommandLineOptions(argc, argv,
> - "LLVM Compiler Driver(Work In
> Progress)");
> - PopulateCompilationGraph(graph);
> - return BuildTargets(graph);
> - }
> - catch(const std::exception& ex) {
> - std::cerr << ex.what() << '\n';
> - }
> - catch(...) {
> - std::cerr << "Unknown error!\n";
> - }
> -}
>
> Modified: llvm/trunk/utils/TableGen/LLVMCCConfigurationEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/
> LLVMCCConfigurationEmitter.cpp?rev=50722&r1=50721&r2=50722&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/utils/TableGen/LLVMCCConfigurationEmitter.cpp
> (original)
> +++ llvm/trunk/utils/TableGen/LLVMCCConfigurationEmitter.cpp Tue
> May 6 11:34:12 2008
> @@ -623,10 +623,10 @@
> << "::iterator B = " << D.GenVariableName() << ".begin(),\n"
> << Indent3 << "E = " << D.GenVariableName()
> << ".end(); B != E; ++B)\n"
> - << Indent4 << "UnpackValues(*B, vec);\n";
> + << Indent4 << "Tool::UnpackValues(*B, vec);\n";
> }
> else if (D.Type == OptionType::Prefix || D.Type ==
> OptionType::Parameter){
> - O << Indent3 << "UnpackValues("
> + O << Indent3 << "Tool::UnpackValues("
> << D.GenVariableName() << ", vec);\n";
> }
> else {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list