1 //===- Common.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 - the root node of the compilation graph.
22 // Possible Tool properties
31 // Possible option types
36 def parameter_list_option;
38 def prefix_list_option;
40 // Possible option properties
52 // The 'case' construct.
59 def input_languages_contain;
68 // Increase/decrease the edge weight.
72 // Map from suffixes to language names
74 class LangToSuffixes<string str, list<string> lst> {
76 list<string> suffixes = lst;
79 class LanguageMap<list<LangToSuffixes> lst> {
80 list<LangToSuffixes> map = lst;
85 class EdgeBase<Tool t1, Tool t2, dag d> {
91 class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
93 // Edge and SimpleEdge are synonyms.
94 class SimpleEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
96 // Optionally enabled edge.
97 class OptionalEdge<Tool t1, Tool t2, dag props> : EdgeBase<t1, t2, props>;
99 class CompilationGraph<list<EdgeBase> lst> {
100 list<EdgeBase> edges = lst;