1 //===- Tools.td - Common definitions for LLVMCC -----------*- 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 common definitions used in llvmcc tool description files.
12 //===----------------------------------------------------------------------===//
14 class Tool<list<dag> l> {
15 list<dag> properties = l;
18 // Special Tool instance - graph root.
22 // Possible Tool properties
31 // Possible option types
35 def parameter_list_option;
37 def prefix_list_option;
39 // Possible option properties
48 // Possible edge properties
54 // Property combinators
59 // Map from suffixes to language names
61 class LangToSuffixes<string str, list<string> lst> {
63 list<string> suffixes = lst;
66 class LanguageMap<list<LangToSuffixes> lst> {
67 list<LangToSuffixes> map = lst;
72 class EdgeBase<Tool t1, Tool t2, list<dag> lst> {
75 list<dag> props = lst;
78 class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
80 // Edge and DefaultEdge are synonyms.
81 class DefaultEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
83 // Optionally enabled edge.
84 class OptionalEdge<Tool t1, Tool t2, list<dag> lst> : EdgeBase<t1, t2, lst>;
86 class CompilationGraph<list<EdgeBase> lst> {
87 list<EdgeBase> edges = lst;