Add a generalised 'case' construct.
[oota-llvm.git] / tools / llvmc2 / Common.td
index b04596fb76e7b530a1a245b1d459824b76854786..2a6b54eba8e05bab2a7f5ce9e74181eba820fdaa 100644 (file)
@@ -45,19 +45,26 @@ def unpack_values;
 def help;
 def required;
 
-// Possible edge properties
+// Marker for an empty DAG.
+def empty;
 
-// 'Atomic' properties.
+// The 'case' construct.
+def case;
+
+// Primitive tests.
 def switch_on;
 def parameter_equals;
 def element_in_list;
-def if_input_languages_contain;
+def input_languages_contain;
 
-// Edge property combinators.
-def weight;
+// Boolean operators.
 def and;
 def or;
 
+// Increase/decrease the edge weight.
+def inc_weight;
+def dec_weight;
+
 // Map from suffixes to language names
 
 class LangToSuffixes<string str, list<string> lst> {
@@ -71,19 +78,19 @@ class LanguageMap<list<LangToSuffixes> lst> {
 
 // Compilation graph
 
-class EdgeBase<Tool t1, Tool t2, list<dag> lst> {
+class EdgeBase<Tool t1, Tool t2, dag d> {
       Tool a = t1;
       Tool b = t2;
-      list<dag> props = lst;
+      dag weight = d;
 }
 
-class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
+class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
 
 // Edge and SimpleEdge are synonyms.
-class SimpleEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
+class SimpleEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
 
 // Optionally enabled edge.
-class OptionalEdge<Tool t1, Tool t2, list<dag> lst> : EdgeBase<t1, t2, lst>;
+class OptionalEdge<Tool t1, Tool t2, dag props> : EdgeBase<t1, t2, props>;
 
 class CompilationGraph<list<EdgeBase> lst> {
       list<EdgeBase> edges = lst;