aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/llvmc2/doc/LLVMC-Reference.rst21
-rw-r--r--tools/llvmc2/doc/LLVMC-Tutorial.rst2
-rw-r--r--tools/llvmc2/plugins/Base/Base.td54
-rw-r--r--tools/llvmc2/plugins/Clang/Clang.td12
-rw-r--r--tools/llvmc2/plugins/Simple/Simple.td2
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">]>;