1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00

[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.

llvm-svn: 307088
This commit is contained in:
Daniel Sanders 2017-07-04 15:31:50 +00:00
parent e7c8763550
commit 30c3678129
2 changed files with 8 additions and 3 deletions

View 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++;

View 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"