From 47de8391c0d560e88e84382c9d5c2059e888353d Mon Sep 17 00:00:00 2001 From: Vedant Kumar Date: Thu, 1 Dec 2016 19:38:50 +0000 Subject: [tablegen] Delete duplicates from a vector without skipping elements Tablegen's -gen-instr-info pass has a bug in its emitEnums() routine. The function intends for values in a vector to be deduplicated, but it accidentally skips over elements after performing a deletion. I think there are smarter ways of doing this deduplication, but we can do that in a follow-up commit if there's interest. See the thread: [PATCH] TableGen InstrMapping Bug fix. Patch by Tyler Kenney! llvm-svn: 288408 --- llvm/utils/TableGen/CodeGenMapTable.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'llvm/utils/TableGen/CodeGenMapTable.cpp') diff --git a/llvm/utils/TableGen/CodeGenMapTable.cpp b/llvm/utils/TableGen/CodeGenMapTable.cpp index 527f530da47..8032d7b3ee9 100644 --- a/llvm/utils/TableGen/CodeGenMapTable.cpp +++ b/llvm/utils/TableGen/CodeGenMapTable.cpp @@ -542,6 +542,7 @@ static void emitEnums(raw_ostream &OS, RecordKeeper &Records) { for (unsigned j = i+1; j < FieldValues.size(); j++) { if (CurVal == FieldValues[j]) { FieldValues.erase(FieldValues.begin()+j); + --j; } } } -- cgit v1.2.3