diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/llvmc2/doc/LLVMC-Reference.rst | 21 | ||||
-rw-r--r-- | tools/llvmc2/doc/LLVMC-Tutorial.rst | 2 | ||||
-rw-r--r-- | tools/llvmc2/plugins/Base/Base.td | 54 | ||||
-rw-r--r-- | tools/llvmc2/plugins/Clang/Clang.td | 12 | ||||
-rw-r--r-- | tools/llvmc2/plugins/Simple/Simple.td | 2 |
5 files changed, 47 insertions, 44 deletions
diff --git a/tools/llvmc2/doc/LLVMC-Reference.rst b/tools/llvmc2/doc/LLVMC-Reference.rst index 62e2ef4..2d78257 100644 --- a/tools/llvmc2/doc/LLVMC-Reference.rst +++ b/tools/llvmc2/doc/LLVMC-Reference.rst @@ -158,7 +158,7 @@ definitions:: include "llvm/CompilerDriver/Common.td" // And optionally: // include "llvm/CompilerDriver/Tools.td" - // which contains tool definitions. + // which contains some useful tool definitions. Internally, LLVMC stores information about possible source transformations in form of a graph. Nodes in this graph represent @@ -171,19 +171,19 @@ The definition of the compilation graph (see file ``plugins/Base/Base.td`` for an example) is just a list of edges:: def CompilationGraph : CompilationGraph<[ - Edge<root, llvm_gcc_c>, - Edge<root, llvm_gcc_assembler>, + Edge<"root", "llvm_gcc_c">, + Edge<"root", "llvm_gcc_assembler">, ... - Edge<llvm_gcc_c, llc>, - Edge<llvm_gcc_cpp, llc>, + Edge<"llvm_gcc_c", "llc">, + Edge<"llvm_gcc_cpp", "llc">, ... - OptionalEdge<llvm_gcc_c, opt, [(switch_on "opt")]>, - OptionalEdge<llvm_gcc_cpp, opt, [(switch_on "opt")]>, + OptionalEdge<"llvm_gcc_c", "opt", [(switch_on "opt")]>, + OptionalEdge<"llvm_gcc_cpp", "opt", [(switch_on "opt")]>, ... - OptionalEdge<llvm_gcc_assembler, llvm_gcc_cpp_linker, + OptionalEdge<"llvm_gcc_assembler", "llvm_gcc_cpp_linker", (case (input_languages_contain "c++"), (inc_weight), (or (parameter_equals "linker", "g++"), (parameter_equals "linker", "c++")), (inc_weight))>, @@ -193,7 +193,10 @@ The definition of the compilation graph (see file As you can see, the edges can be either default or optional, where optional edges are differentiated by an additional ``case`` expression -used to calculate the weight of this edge. +used to calculate the weight of this edge. Notice also that we refer +to tools via their names (as strings). This allows us to add edges to +an existing compilation graph without having to include all tool +definitions that it uses. The default edges are assigned a weight of 1, and optional edges get a weight of 0 + 2*N where N is the number of tests that evaluated to diff --git a/tools/llvmc2/doc/LLVMC-Tutorial.rst b/tools/llvmc2/doc/LLVMC-Tutorial.rst index ffc1de9..9c6741e 100644 --- a/tools/llvmc2/doc/LLVMC-Tutorial.rst +++ b/tools/llvmc2/doc/LLVMC-Tutorial.rst @@ -66,7 +66,7 @@ Contents of the file ``Simple.td`` look like this:: def LanguageMap : LanguageMap<[LangToSuffixes<"c", ["c"]>]>; // Compilation graph - def CompilationGraph : CompilationGraph<[Edge<root, gcc>]>; + def CompilationGraph : CompilationGraph<[Edge<"root", "gcc">]>; As you can see, this file consists of three parts: tool descriptions, language map, and the compilation graph definition. diff --git a/tools/llvmc2/plugins/Base/Base.td b/tools/llvmc2/plugins/Base/Base.td index 158520c..85a37cb 100644 --- a/tools/llvmc2/plugins/Base/Base.td +++ b/tools/llvmc2/plugins/Base/Base.td @@ -17,42 +17,42 @@ include "llvm/CompilerDriver/Tools.td" // Toolchains def CompilationGraph : CompilationGraph<[ - Edge<root, llvm_gcc_c>, - Edge<root, llvm_gcc_assembler>, - Edge<root, llvm_gcc_cpp>, - Edge<root, llvm_gcc_m>, - Edge<root, llvm_gcc_mxx>, - Edge<root, llvm_as>, - - Edge<llvm_gcc_c, llc>, - Edge<llvm_gcc_cpp, llc>, - Edge<llvm_gcc_m, llc>, - Edge<llvm_gcc_mxx, llc>, - Edge<llvm_as, llc>, - - OptionalEdge<llvm_gcc_c, opt, (case (switch_on "opt"), (inc_weight))>, - OptionalEdge<llvm_gcc_cpp, opt, (case (switch_on "opt"), (inc_weight))>, - OptionalEdge<llvm_gcc_m, opt, (case (switch_on "opt"), (inc_weight))>, - OptionalEdge<llvm_gcc_mxx, opt, (case (switch_on "opt"), (inc_weight))>, - OptionalEdge<llvm_as, opt, (case (switch_on "opt"), (inc_weight))>, - Edge<opt, llc>, - - Edge<llc, llvm_gcc_assembler>, - Edge<llvm_gcc_assembler, llvm_gcc_linker>, - OptionalEdge<llvm_gcc_assembler, llvm_gcc_cpp_linker, + Edge<"root", "llvm_gcc_c">, + Edge<"root", "llvm_gcc_assembler">, + Edge<"root", "llvm_gcc_cpp">, + Edge<"root", "llvm_gcc_m">, + Edge<"root", "llvm_gcc_mxx">, + Edge<"root", "llvm_as">, + + Edge<"llvm_gcc_c", "llc">, + Edge<"llvm_gcc_cpp", "llc">, + Edge<"llvm_gcc_m", "llc">, + Edge<"llvm_gcc_mxx", "llc">, + Edge<"llvm_as", "llc">, + + OptionalEdge<"llvm_gcc_c", "opt", (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<"llvm_gcc_cpp", "opt", (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<"llvm_gcc_m", "opt", (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<"llvm_gcc_mxx", "opt", (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<"llvm_as", "opt", (case (switch_on "opt"), (inc_weight))>, + Edge<"opt", "llc">, + + Edge<"llc", "llvm_gcc_assembler">, + Edge<"llvm_gcc_assembler", "llvm_gcc_linker">, + OptionalEdge<"llvm_gcc_assembler", "llvm_gcc_cpp_linker", (case (or (input_languages_contain "c++"), - (input_languages_contain "objective-c++")), + (input_languages_contain "objective-c++")), (inc_weight), (or (parameter_equals "linker", "g++"), (parameter_equals "linker", "c++")), (inc_weight))>, - Edge<root, llvm_gcc_linker>, - OptionalEdge<root, llvm_gcc_cpp_linker, + Edge<"root", "llvm_gcc_linker">, + OptionalEdge<"root", "llvm_gcc_cpp_linker", (case (or (input_languages_contain "c++"), - (input_languages_contain "objective-c++")), + (input_languages_contain "objective-c++")), (inc_weight), (or (parameter_equals "linker", "g++"), (parameter_equals "linker", "c++")), (inc_weight))> diff --git a/tools/llvmc2/plugins/Clang/Clang.td b/tools/llvmc2/plugins/Clang/Clang.td index d30bc97..ee6987f 100644 --- a/tools/llvmc2/plugins/Clang/Clang.td +++ b/tools/llvmc2/plugins/Clang/Clang.td @@ -76,11 +76,11 @@ def LanguageMap : LanguageMap< // Compilation graph def CompilationGraph : CompilationGraph<[ - Edge<root, clang_c>, - Edge<root, clang_cpp>, - Edge<root, clang_objective_c>, - Edge<clang_c, llvm_ld>, - Edge<clang_cpp, llvm_ld>, - Edge<clang_objective_c, llvm_ld> + Edge<"root", "clang_c">, + Edge<"root", "clang_cpp">, + Edge<"root", "clang_objective_c">, + Edge<"clang_c", "llvm_ld">, + Edge<"clang_cpp", "llvm_ld">, + Edge<"clang_objective_c", "llvm_ld"> ]>; diff --git a/tools/llvmc2/plugins/Simple/Simple.td b/tools/llvmc2/plugins/Simple/Simple.td index 2bc4011..b974cbc 100644 --- a/tools/llvmc2/plugins/Simple/Simple.td +++ b/tools/llvmc2/plugins/Simple/Simple.td @@ -27,4 +27,4 @@ def gcc : Tool< def LanguageMap : LanguageMap<[LangToSuffixes<"c", ["c"]>]>; -def CompilationGraph : CompilationGraph<[Edge<root, gcc>]>; +def CompilationGraph : CompilationGraph<[Edge<"root", "gcc">]>; |