]> granicus.if.org Git - llvm/commitdiff
[globalisel][tablegen] Fix release builds after r307079
authorDaniel Sanders <daniel_l_sanders@apple.com>
Tue, 4 Jul 2017 15:31:50 +0000 (15:31 +0000)
committerDaniel Sanders <daniel_l_sanders@apple.com>
Tue, 4 Jul 2017 15:31:50 +0000 (15:31 +0000)
Using NumPatternEmitted as a unique id for the tables is not valid on release
builds since the counters don't count in that case.

Also fix an unused variable warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307088 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
utils/TableGen/GlobalISelEmitter.cpp

index 578b0943e64226b71ce264057feb88c653b6a022..5020f6e3df4ad96a4d570723d3762b20ff2a0373 100644 (file)
@@ -29,7 +29,7 @@ bool InstructionSelector::executeMatchTable(
   while (true) {
     switch (*Command++) {
     case GIM_RecordInsn: {
-      int64_t NewInsnID = *Command++;
+      int64_t NewInsnID LLVM_ATTRIBUTE_UNUSED = *Command++;
       int64_t InsnID = *Command++;
       int64_t OpIdx = *Command++;
 
index 0a43337e606e005858ad0e9cfbbaeb323fdb9693..387b797c84d94fc2d4d8a761b3f45c5d2ef2678c 100644 (file)
@@ -53,6 +53,8 @@ STATISTIC(NumPatternTotal, "Total number of patterns");
 STATISTIC(NumPatternImported, "Number of patterns imported from SelectionDAG");
 STATISTIC(NumPatternImportsSkipped, "Number of SelectionDAG imports skipped");
 STATISTIC(NumPatternEmitted, "Number of patterns emitted");
+/// A unique identifier for a MatchTable.
+static unsigned CurrentMatchTableID = 0;
 
 cl::OptionCategory GlobalISelEmitterCat("Options for -gen-global-isel");
 
@@ -1269,7 +1271,7 @@ void RuleMatcher::emit(raw_ostream &OS) {
   // on some targets but we don't need to make use of that yet.
   assert(Matchers.size() == 1 && "Cannot handle multi-root matchers yet");
 
-  OS << "  const static int64_t MatchTable" << NumPatternEmitted << "[] = {\n";
+  OS << "  const static int64_t MatchTable" << CurrentMatchTableID << "[] = {\n";
   if (!RequiredFeatures.empty()) {
     OS << "    GIM_CheckFeatures, " << getNameForFeatureBitset(RequiredFeatures)
        << ",\n";
@@ -1286,7 +1288,7 @@ void RuleMatcher::emit(raw_ostream &OS) {
      << "  State.MIs.clear();\n"
      << "  State.MIs.push_back(&I);\n"
      << "  if (executeMatchTable(*this, State, MatcherInfo, MatchTable"
-     << NumPatternEmitted << ", MRI, TRI, RBI, AvailableFeatures)) {\n";
+     << CurrentMatchTableID << ", MRI, TRI, RBI, AvailableFeatures)) {\n";
 
   // We must also check if it's safe to fold the matched instructions.
   if (InsnVariableIDs.size() >= 2) {
@@ -2171,7 +2173,10 @@ void GlobalISelEmitter::run(raw_ostream &OS) {
 
   for (auto &Rule : Rules) {
     Rule.emit(OS);
+    ++CurrentMatchTableID;
     ++NumPatternEmitted;
+    assert(CurrentMatchTableID == NumPatternEmitted &&
+           "Statistic deviates from number of emitted tables");
   }
 
   OS << "  return false;\n"