1 //===- Base.td - LLVMC2 toolchain descriptions -------------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains compilation graph description used by llvmc2.
12 //===----------------------------------------------------------------------===//
14 include "llvm/CompilerDriver/Common.td"
15 include "llvm/CompilerDriver/Tools.td"
19 def CompilationGraph : CompilationGraph<[
20 Edge<"root", "llvm_gcc_c">,
21 Edge<"root", "llvm_gcc_assembler">,
22 Edge<"root", "llvm_gcc_cpp">,
23 Edge<"root", "llvm_gcc_m">,
24 Edge<"root", "llvm_gcc_mxx">,
25 Edge<"root", "llvm_as">,
27 Edge<"llvm_gcc_c", "llc">,
28 Edge<"llvm_gcc_cpp", "llc">,
29 Edge<"llvm_gcc_m", "llc">,
30 Edge<"llvm_gcc_mxx", "llc">,
31 Edge<"llvm_as", "llc">,
33 OptionalEdge<"llvm_gcc_c", "opt", (case (switch_on "opt"), (inc_weight))>,
34 OptionalEdge<"llvm_gcc_cpp", "opt", (case (switch_on "opt"), (inc_weight))>,
35 OptionalEdge<"llvm_gcc_m", "opt", (case (switch_on "opt"), (inc_weight))>,
36 OptionalEdge<"llvm_gcc_mxx", "opt", (case (switch_on "opt"), (inc_weight))>,
37 OptionalEdge<"llvm_as", "opt", (case (switch_on "opt"), (inc_weight))>,
40 Edge<"llc", "llvm_gcc_assembler">,
41 Edge<"llvm_gcc_assembler", "llvm_gcc_linker">,
42 OptionalEdge<"llvm_gcc_assembler", "llvm_gcc_cpp_linker",
44 (or (input_languages_contain "c++"),
45 (input_languages_contain "objective-c++")),
47 (or (parameter_equals "linker", "g++"),
48 (parameter_equals "linker", "c++")), (inc_weight))>,
51 Edge<"root", "llvm_gcc_linker">,
52 OptionalEdge<"root", "llvm_gcc_cpp_linker",
54 (or (input_languages_contain "c++"),
55 (input_languages_contain "objective-c++")),
57 (or (parameter_equals "linker", "g++"),
58 (parameter_equals "linker", "c++")), (inc_weight))>