diff options
author | Vedant Kumar <vsk@apple.com> | 2016-12-01 19:38:50 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-12-01 19:38:50 +0000 |
commit | 47de8391c0d560e88e84382c9d5c2059e888353d (patch) | |
tree | 4938746c7b49ac6a3480b7952a959e789ec6341c /llvm/utils/TableGen/CodeGenMapTable.cpp | |
parent | 618d78ca40b81fb8ae196394c84a96fc80f77ee7 (diff) | |
download | bcm5719-llvm-47de8391c0d560e88e84382c9d5c2059e888353d.tar.gz bcm5719-llvm-47de8391c0d560e88e84382c9d5c2059e888353d.zip |
[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
Diffstat (limited to 'llvm/utils/TableGen/CodeGenMapTable.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenMapTable.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
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; } } } |