[llvm] r253961 - [TableGen] Use std::set_intersection to merge TypeSets. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 24 00:20:43 PST 2015
Author: ctopper
Date: Tue Nov 24 02:20:42 2015
New Revision: 253961
URL: http://llvm.org/viewvc/llvm-project?rev=253961&view=rev
Log:
[TableGen] Use std::set_intersection to merge TypeSets. NFC
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=253961&r1=253960&r2=253961&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Nov 24 02:20:42 2015
@@ -203,21 +203,20 @@ bool EEVT::TypeSet::MergeInTypeInfo(cons
// If this is a type list and the RHS is a typelist as well, eliminate entries
// from this list that aren't in the other one.
- bool MadeChange = false;
TypeSet InputSet(*this);
- for (unsigned i = 0; i != TypeVec.size(); ++i) {
- if (std::find(InVT.TypeVec.begin(), InVT.TypeVec.end(), TypeVec[i]) !=
- InVT.TypeVec.end())
- continue;
+ TypeVec.clear();
+ std::set_intersection(InputSet.TypeVec.begin(), InputSet.TypeVec.end(),
+ InVT.TypeVec.begin(), InVT.TypeVec.end(),
+ std::back_inserter(TypeVec));
- TypeVec.erase(TypeVec.begin()+i--);
- MadeChange = true;
- }
+ // If the intersection is the same size as the original set then we're done.
+ if (TypeVec.size() == InputSet.TypeVec.size())
+ return false;
// If we removed all of our types, we have a type contradiction.
if (!TypeVec.empty())
- return MadeChange;
+ return true;
// FIXME: Really want an SMLoc here!
TP.error("Type inference contradiction found, merging '" +
More information about the llvm-commits
mailing list