From: Daniel Sanders Date: Tue, 4 Jul 2017 15:31:50 +0000 (+0000) Subject: [globalisel][tablegen] Fix release builds after r307079 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=32b8ab6f1e291012c0379a27f76b3858acf8a15e;p=llvm [globalisel][tablegen] Fix release builds after r307079 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 --- diff --git a/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h b/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h index 578b0943e64..5020f6e3df4 100644 --- a/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h +++ b/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h @@ -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++; diff --git a/utils/TableGen/GlobalISelEmitter.cpp b/utils/TableGen/GlobalISelEmitter.cpp index 0a43337e606..387b797c84d 100644 --- a/utils/TableGen/GlobalISelEmitter.cpp +++ b/utils/TableGen/GlobalISelEmitter.cpp @@ -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"