Add weights to graph edges. Choose between edges based on their weight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50757 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/LLVMCConfigurationEmitter.cpp b/utils/TableGen/LLVMCConfigurationEmitter.cpp
index ab6f2ef..3db9176 100644
--- a/utils/TableGen/LLVMCConfigurationEmitter.cpp
+++ b/utils/TableGen/LLVMCConfigurationEmitter.cpp
@@ -974,9 +974,9 @@
     << Indent1 << "Edge" << N << "() : Edge(\"" << Target
     << "\") {}\n\n"
 
-    // Function isEnabled().
-    << Indent1 << "bool isEnabled() const {\n"
-    << Indent2 << "bool ret = false;\n";
+  // Function Weight().
+    << Indent1 << "unsigned Weight() const {\n"
+    << Indent2 << "unsigned ret = 0;\n";
 
   for (size_t i = 0, PropsSize = Props->size(); i < PropsSize; ++i) {
     const DagInit& Prop = dynamic_cast<DagInit&>(*Props->getElement(i));
@@ -985,7 +985,7 @@
     if (PropName == "default")
       IsDefault = true;
 
-    O << Indent2 << "if (ret || (";
+    O << Indent2 << "if ((";
     if (PropName == "and") {
       O << '(';
       for (unsigned j = 0, NumArgs = Prop.getNumArgs(); j < NumArgs; ++j) {
@@ -1002,19 +1002,14 @@
     else {
       EmitEdgePropertyTest(PropName, Prop, OptDescs, O);
     }
-    O << "))\n" << Indent3 << "ret = true;\n";
+    O << "))\n" << Indent3 << "ret += 2;\n";
   }
 
-  O << Indent2 << "return ret;\n"
-    << Indent1 << "};\n\n"
-
-  // Function isDefault().
-    << Indent1 << "bool isDefault() const { return ";
   if (IsDefault)
-    O << "true";
-  else
-    O << "false";
-  O <<"; }\n};\n\n";
+    O << Indent2 << "ret += 1;\n";
+
+  O << Indent2 << "return ret;\n"
+    << Indent1 << "};\n\n};\n\n";
 }
 
 // Emit Edge* classes that represent graph edges.