From: Mikhail Glushenkov Date: Tue, 6 May 2008 16:34:12 +0000 (+0000) Subject: Code reorg X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=b90cd834ca5a849fcfcb6bbca5d38f73f5c37fcf;p=oota-llvm.git Code reorg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50722 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvmc2/Action.cpp b/tools/llvmc2/Action.cpp new file mode 100644 index 00000000000..82a1e0c4c96 --- /dev/null +++ b/tools/llvmc2/Action.cpp @@ -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 +#include + +using namespace llvm; + +extern cl::opt VerboseMode; + +namespace { + int ExecuteProgram(const std::string& name, + const std::vector& 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 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_); +} diff --git a/tools/llvmc2/Action.h b/tools/llvmc2/Action.h new file mode 100644 index 00000000000..43495c463aa --- /dev/null +++ b/tools/llvmc2/Action.h @@ -0,0 +1,36 @@ +//===--- 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 - encapsulates a single shell command. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMC2_ACTION_H +#define LLVM_TOOLS_LLVMC2_ACTION_H + +#include +#include + +namespace llvmcc { + + class Action { + std::string Command_; + std::vector Args_; + public: + Action (std::string const& C, + std::vector const& A) + : Command_(C), Args_(A) + {} + + int Execute(); + }; + +} + +#endif // LLVM_TOOLS_LLVMC2_ACTION_H diff --git a/tools/llvmc2/AutoGenerated.cpp b/tools/llvmc2/AutoGenerated.cpp new file mode 100644 index 00000000000..327e8e758e3 --- /dev/null +++ b/tools/llvmc2/AutoGenerated.cpp @@ -0,0 +1,26 @@ +//===--- 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 - implementation. +// +//===----------------------------------------------------------------------===// + +#include "AutoGenerated.h" +#include "CompilationGraph.h" +#include "Tool.h" + +#include "llvm/Support/CommandLine.h" + +#include + +using namespace llvm; +using namespace llvmcc; + +// The auto-generated file +#include "AutoGenerated.inc" diff --git a/tools/llvmc2/AutoGenerated.h b/tools/llvmc2/AutoGenerated.h new file mode 100644 index 00000000000..686ae3feaff --- /dev/null +++ b/tools/llvmc2/AutoGenerated.h @@ -0,0 +1,30 @@ +//===--- 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 - public interface. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMC2_AUTOGENERATED_H +#define LLVM_TOOLS_LLVMC2_AUTOGENERATED_H + +#include "llvm/ADT/StringMap.h" + +#include + +namespace llvmcc { + + typedef llvm::StringMap LanguageMap; + class CompilationGraph; + + void PopulateLanguageMap(LanguageMap& language_map); + void PopulateCompilationGraph(CompilationGraph& tools); +} + +#endif // LLVM_TOOLS_LLVMC2_AUTOGENERATED_H diff --git a/tools/llvmc2/CompilationGraph.cpp b/tools/llvmc2/CompilationGraph.cpp new file mode 100644 index 00000000000..36e5fc7c0ab --- /dev/null +++ b/tools/llvmc2/CompilationGraph.cpp @@ -0,0 +1,88 @@ +//===--- CompilationGraph.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. +// +//===----------------------------------------------------------------------===// +// +// Compilation graph - implementation. +// +//===----------------------------------------------------------------------===// + +#include "CompilationGraph.h" + +#include "llvm/Support/CommandLine.h" +#include "llvm/ADT/STLExtras.h" + +#include + +using namespace llvm; + +extern cl::list InputFilenames; +extern cl::opt OutputFilename; + +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::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; +} diff --git a/tools/llvmc2/CompilationGraph.h b/tools/llvmc2/CompilationGraph.h new file mode 100644 index 00000000000..c34b58ff5e4 --- /dev/null +++ b/tools/llvmc2/CompilationGraph.h @@ -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 > ToolChain; + typedef llvm::StringMap ToolChainMap; + + struct CompilationGraph { + ToolChainMap ToolChains; + LanguageMap ExtsToLangs; + + int Build(llvm::sys::Path const& tempDir) const; + }; +} + +#endif // LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H diff --git a/tools/llvmc2/Core.cpp b/tools/llvmc2/Core.cpp deleted file mode 100644 index d08ee7c00fa..00000000000 --- a/tools/llvmc2/Core.cpp +++ /dev/null @@ -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 -#include -#include - -using namespace llvm; -using namespace llvmcc; - -extern cl::list InputFilenames; -extern cl::opt OutputFilename; -extern cl::opt 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::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& to) const { - SplitString(from, to, ","); -} - diff --git a/tools/llvmc2/Core.h b/tools/llvmc2/Core.h deleted file mode 100644 index f82e0fa98ea..00000000000 --- a/tools/llvmc2/Core.h +++ /dev/null @@ -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 -#include -#include - -// Core functionality - -namespace llvmcc { - - typedef std::vector PathVector; - typedef llvm::StringMap LanguageMap; - - class Action { - std::string Command_; - std::vector Args_; - public: - Action (std::string const& C, - std::vector const& A) - : Command_(C), Args_(A) - {} - - int Execute(); - }; - - class Tool : public llvm::RefCountedBaseVPTR { - 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& to) const; - - virtual ~Tool() - {} - }; - - typedef std::vector > ToolChain; - typedef llvm::StringMap ToolChainMap; - - struct CompilationGraph { - ToolChainMap ToolChains; - LanguageMap ExtsToLangs; - - int Build(llvm::sys::Path const& tempDir) const; - }; -} - -#endif // LLVM_TOOLS_LLVMCC_CORE_H diff --git a/tools/llvmc2/Makefile b/tools/llvmc2/Makefile index ab8ff478c90..8fe1e818712 100644 --- a/tools/llvmc2/Makefile +++ b/tools/llvmc2/Makefile @@ -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 @@ endif # 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) $< $@ diff --git a/tools/llvmc2/Tool.cpp b/tools/llvmc2/Tool.cpp new file mode 100644 index 00000000000..d0e703a9c1c --- /dev/null +++ b/tools/llvmc2/Tool.cpp @@ -0,0 +1,21 @@ +//===--- 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. +// +//===----------------------------------------------------------------------===// +// +// Tool abstract base class - implementation of the auxiliary functions. +// +//===----------------------------------------------------------------------===// + +#include "Tool.h" + +#include "llvm/ADT/StringExtras.h" + +void llvmcc::Tool::UnpackValues (const std::string& from, + std::vector& to) { + llvm::SplitString(from, to, ","); +} diff --git a/tools/llvmc2/Tool.h b/tools/llvmc2/Tool.h new file mode 100644 index 00000000000..b0cd2373038 --- /dev/null +++ b/tools/llvmc2/Tool.h @@ -0,0 +1,57 @@ +//===--- 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. +// +//===----------------------------------------------------------------------===// +// +// Tool abstract base class - an interface to tool descriptions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMC2_TOOL_H +#define LLVM_TOOLS_LLVMC2_TOOL_H + +#include "Action.h" + +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/System/Path.h" + +#include +#include + +namespace llvmcc { + + typedef std::vector PathVector; + + class Tool : public llvm::RefCountedBaseVPTR { + 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 + static void UnpackValues (std::string const& from, + std::vector& to); + + virtual ~Tool() + {} + }; + +} + +#endif //LLVM_TOOLS_LLVMC2_TOOL_H diff --git a/tools/llvmc2/Tools.cpp b/tools/llvmc2/Tools.cpp deleted file mode 100644 index 7a9921c54b7..00000000000 --- a/tools/llvmc2/Tools.cpp +++ /dev/null @@ -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 -#include -#include - -using namespace llvm; -using namespace llvmcc; - -// Include the auto-generated file -#include "Tools.inc" diff --git a/tools/llvmc2/Tools.h b/tools/llvmc2/Tools.h deleted file mode 100644 index ba8f06dbd6d..00000000000 --- a/tools/llvmc2/Tools.h +++ /dev/null @@ -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 diff --git a/tools/llvmc2/Utility.cpp b/tools/llvmc2/Utility.cpp deleted file mode 100644 index c53578ad44b..00000000000 --- a/tools/llvmc2/Utility.cpp +++ /dev/null @@ -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 - -using namespace llvm; - -int llvmcc::ExecuteProgram(const std::string& name, - const std::vector& 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 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]); -} diff --git a/tools/llvmc2/Utility.h b/tools/llvmc2/Utility.h deleted file mode 100644 index 3c985a49fc9..00000000000 --- a/tools/llvmc2/Utility.h +++ /dev/null @@ -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 -#include - -namespace llvmcc { - - int ExecuteProgram (const std::string& name, - const std::vector& arguments); - -} - -#endif // LLVM_TOOLS_LLVMCC_UTILITY_H diff --git a/tools/llvmc2/llvmc.cpp b/tools/llvmc2/llvmc.cpp new file mode 100644 index 00000000000..feed61f89f1 --- /dev/null +++ b/tools/llvmc2/llvmc.cpp @@ -0,0 +1,72 @@ +//===--- 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 "CompilationGraph.h" +#include "Tool.h" + +#include "llvm/System/Path.h" +#include "llvm/Support/CommandLine.h" + +#include +#include +#include + +namespace cl = llvm::cl; +namespace sys = llvm::sys; +using namespace llvmcc; + +// External linkage here is intentional. +cl::list InputFilenames(cl::Positional, + cl::desc(""), cl::OneOrMore); +cl::opt OutputFilename("o", cl::desc("Output file name"), + cl::value_desc("file")); +cl::opt 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"; + } +} diff --git a/tools/llvmc2/llvmcc.cpp b/tools/llvmc2/llvmcc.cpp deleted file mode 100644 index c5edac96062..00000000000 --- a/tools/llvmc2/llvmcc.cpp +++ /dev/null @@ -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 -#include -#include - -using namespace llvm; -using namespace llvmcc; - -// These variables are also used in Core.cpp, -// so they should have external linkage. -cl::list InputFilenames(cl::Positional, - cl::desc(""), cl::OneOrMore); -cl::opt OutputFilename("o", cl::desc("Output file name"), - cl::value_desc("file")); -cl::opt 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"; - } -} diff --git a/utils/TableGen/LLVMCCConfigurationEmitter.cpp b/utils/TableGen/LLVMCCConfigurationEmitter.cpp index 9c6f0644601..7723ed96bfa 100644 --- a/utils/TableGen/LLVMCCConfigurationEmitter.cpp +++ b/utils/TableGen/LLVMCCConfigurationEmitter.cpp @@ -623,10 +623,10 @@ void EmitOptionPropertyHandlingCode (const ToolProperties& P, << "::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 {