[llvm-commits] [llvm] r51744 - in /llvm/trunk: tools/llvmc2/AutoGenerated.cpp tools/llvmc2/AutoGenerated.h tools/llvmc2/Common.td tools/llvmc2/CompilationGraph.cpp tools/llvmc2/CompilationGraph.h tools/llvmc2/Tools.td tools/llvmc2/examples/Clang.td utils/TableGen/LLVMCConfigurationEmitter.cpp
Mikhail Glushenkov
foldr at codedgers.com
Thu May 29 23:19:52 PDT 2008
Author: foldr
Date: Fri May 30 01:19:52 2008
New Revision: 51744
URL: http://llvm.org/viewvc/llvm-project?rev=51744&view=rev
Log:
New tests for the 'case' expression: not_empty, in_language.
Modified:
llvm/trunk/tools/llvmc2/AutoGenerated.cpp
llvm/trunk/tools/llvmc2/AutoGenerated.h
llvm/trunk/tools/llvmc2/Common.td
llvm/trunk/tools/llvmc2/CompilationGraph.cpp
llvm/trunk/tools/llvmc2/CompilationGraph.h
llvm/trunk/tools/llvmc2/Tools.td
llvm/trunk/tools/llvmc2/examples/Clang.td
llvm/trunk/utils/TableGen/LLVMCConfigurationEmitter.cpp
Modified: llvm/trunk/tools/llvmc2/AutoGenerated.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/AutoGenerated.cpp?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/AutoGenerated.cpp (original)
+++ llvm/trunk/tools/llvmc2/AutoGenerated.cpp Fri May 30 01:19:52 2008
@@ -24,5 +24,10 @@
using namespace llvm;
using namespace llvmc;
+namespace llvmc {
+ extern LanguageMap GlobalLanguageMap;
+ extern const std::string& GetLanguage(const sys::Path& File);
+}
+
// The auto-generated file
#include "AutoGenerated.inc"
Modified: llvm/trunk/tools/llvmc2/AutoGenerated.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/AutoGenerated.h?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/AutoGenerated.h (original)
+++ llvm/trunk/tools/llvmc2/AutoGenerated.h Fri May 30 01:19:52 2008
@@ -25,7 +25,7 @@
/// PopulateLanguageMap - The auto-generated function that fills in
/// the language map (map from file extensions to language names).
- void PopulateLanguageMap(LanguageMap& language_map);
+ void PopulateLanguageMap();
/// PopulateCompilationGraph - The auto-generated function that
/// populates the compilation graph with nodes and edges.
void PopulateCompilationGraph(CompilationGraph& tools);
Modified: llvm/trunk/tools/llvmc2/Common.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/Common.td?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/Common.td (original)
+++ llvm/trunk/tools/llvmc2/Common.td Fri May 30 01:19:52 2008
@@ -56,6 +56,8 @@
def parameter_equals;
def element_in_list;
def input_languages_contain;
+def not_empty;
+// TOTHINK: remove?
def default;
// Boolean operators.
Modified: llvm/trunk/tools/llvmc2/CompilationGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/CompilationGraph.cpp?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/CompilationGraph.cpp (original)
+++ llvm/trunk/tools/llvmc2/CompilationGraph.cpp Fri May 30 01:19:52 2008
@@ -32,6 +32,19 @@
extern cl::opt<std::string> OutputFilename;
extern cl::list<std::string> Languages;
+namespace llvmc {
+ /// ExtsToLangs - Map from file extensions to language names.
+ LanguageMap GlobalLanguageMap;
+
+ /// GetLanguage - Find the language name corresponding to the given file.
+ const std::string& GetLanguage(const sys::Path& File) {
+ LanguageMap::const_iterator Lang = GlobalLanguageMap.find(File.getSuffix());
+ if (Lang == GlobalLanguageMap.end())
+ throw std::runtime_error("Unknown suffix: " + File.getSuffix());
+ return Lang->second;
+ }
+}
+
namespace {
/// ChooseEdge - Return the edge with the maximum weight.
@@ -87,14 +100,6 @@
return I->second;
}
-// Find the language name corresponding to the given file.
-const std::string& CompilationGraph::getLanguage(const sys::Path& File) const {
- LanguageMap::const_iterator Lang = ExtsToLangs.find(File.getSuffix());
- if (Lang == ExtsToLangs.end())
- throw std::runtime_error("Unknown suffix: " + File.getSuffix());
- return Lang->second;
-}
-
// Find the tools list corresponding to the given language name.
const CompilationGraph::tools_vector_type&
CompilationGraph::getToolsVector(const std::string& LangName) const
@@ -200,7 +205,7 @@
// Determine the input language.
const std::string& InLanguage =
- forceLanguage ? *forceLanguage : getLanguage(In);
+ forceLanguage ? *forceLanguage : GetLanguage(In);
// Add the current input language to the input language set.
InLangs.insert(InLanguage);
Modified: llvm/trunk/tools/llvmc2/CompilationGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/CompilationGraph.h?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/CompilationGraph.h (original)
+++ llvm/trunk/tools/llvmc2/CompilationGraph.h Fri May 30 01:19:52 2008
@@ -111,8 +111,6 @@
llvm::SmallVector<llvm::IntrusiveRefCntPtr<Edge>, 3> tools_vector_type;
typedef llvm::StringMap<tools_vector_type> tools_map_type;
- /// ExtsToLangs - Map from file extensions to language names.
- LanguageMap ExtsToLangs;
/// ToolsMap - Map from language names to lists of tool names.
tools_map_type ToolsMap;
/// NodesMap - Map from tool names to Tool objects.
@@ -134,7 +132,7 @@
/// options are passed implicitly as global variables.
int Build(llvm::sys::Path const& tempDir);
- /// getNode -Return a reference to the node correponding to the
+ /// getNode - Return a reference to the node correponding to the
/// given tool name. Throws std::runtime_error.
Node& getNode(const std::string& ToolName);
const Node& getNode(const std::string& ToolName) const;
@@ -152,15 +150,10 @@
// GraphTraits support.
friend NodesIterator GraphBegin(CompilationGraph*);
friend NodesIterator GraphEnd(CompilationGraph*);
- friend void PopulateCompilationGraph(CompilationGraph&);
private:
// Helper functions.
- /// getLanguage - Find out which language corresponds to the
- /// suffix of this file.
- const std::string& getLanguage(const llvm::sys::Path& File) const;
-
/// getToolsVector - Return a reference to the list of tool names
/// corresponding to the given language name. Throws
/// std::runtime_error.
Modified: llvm/trunk/tools/llvmc2/Tools.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/Tools.td?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/Tools.td (original)
+++ llvm/trunk/tools/llvmc2/Tools.td Fri May 30 01:19:52 2008
@@ -41,6 +41,7 @@
(output_suffix "bc"),
(cmd_line (case
(switch_on "E"),
+ // TOFIX: this does not play well with -o
"llvm-g++ -E -x c++ $INFILE",
(default),
"llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")),
Modified: llvm/trunk/tools/llvmc2/examples/Clang.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/examples/Clang.td?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/tools/llvmc2/examples/Clang.td (original)
+++ llvm/trunk/tools/llvmc2/examples/Clang.td Fri May 30 01:19:52 2008
@@ -8,9 +8,13 @@
[(in_language ["c", "c++", "objective-c"]),
(out_language "llvm-bitcode"),
(output_suffix "bc"),
- // TOFIX: We should be able to test the language of the input file
(cmd_line (case (switch_on "E"), "clang -E $INFILE",
- (default), "clang -emit-llvm-bc $INFILE -o $OUTFILE")),
+ (in_language "c"),
+ "clang -emit-llvm-bc -x c $INFILE -o $OUTFILE",
+ (in_language "c++"),
+ "clang -emit-llvm-bc -x c++ $INFILE -o $OUTFILE",
+ (in_language "objective-c"),
+ "clang -emit-llvm-bc -x objective-c$INFILE -o $OUTFILE")),
(switch_option "E", (stop_compilation), (output_suffix "i"),
(help "Stop after the preprocessing stage, do not run the compiler")),
(sink)
Modified: llvm/trunk/utils/TableGen/LLVMCConfigurationEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/LLVMCConfigurationEmitter.cpp?rev=51744&r1=51743&r2=51744&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/LLVMCConfigurationEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/LLVMCConfigurationEmitter.cpp Fri May 30 01:19:52 2008
@@ -667,6 +667,16 @@
} else if (TestName == "input_languages_contain") {
O << "InLangs.count(\"" << OptName << "\") != 0";
return true;
+ } else if (TestName == "in_language") {
+ // Works only for cmd_line!
+ O << "GetLanguage(inFile) == \"" << OptName << '\"';
+ return true;
+ } else if (TestName == "not_empty") {
+ const GlobalOptionDescription& OptDesc = OptDescs.FindOption(OptName);
+ if (OptDesc.Type == OptionType::Switch)
+ throw OptName + ": incorrect option type!";
+ O << '!' << OptDesc.GenVariableName() << ".empty()";
+ return true;
}
return false;
@@ -1026,7 +1036,7 @@
else
EmitCaseConstructHandler(&InitPtrToDag(P.CmdLine), Indent2,
EmitCmdLineVecFillCallback(Version, P.Name),
- true, OptDescs, O);
+ false, OptDescs, O);
// For every understood option, emit handling code.
for (ToolOptionDescriptions::const_iterator B = P.OptDescs.begin(),
@@ -1222,7 +1232,7 @@
throw std::string("Error in the language map definition!");
// Generate code
- O << "void llvmc::PopulateLanguageMap(LanguageMap& language_map) {\n";
+ O << "void llvmc::PopulateLanguageMap() {\n";
for (unsigned i = 0; i < LangsToSuffixesList->size(); ++i) {
Record* LangToSuffixes = LangsToSuffixesList->getElementAsRecord(i);
@@ -1231,7 +1241,7 @@
const ListInit* Suffixes = LangToSuffixes->getValueAsListInit("suffixes");
for (unsigned i = 0; i < Suffixes->size(); ++i)
- O << Indent1 << "language_map[\""
+ O << Indent1 << "GlobalLanguageMap[\""
<< InitPtrToString(Suffixes->getElement(i))
<< "\"] = \"" << Lang << "\";\n";
}
@@ -1360,7 +1370,7 @@
// Generate code
O << "void llvmc::PopulateCompilationGraph(CompilationGraph& G) {\n"
- << Indent1 << "PopulateLanguageMap(G.ExtsToLangs);\n\n";
+ << Indent1 << "PopulateLanguageMap();\n\n";
// Insert vertices
More information about the llvm-commits
mailing list