[PATCH] LowerBitSets: Introduce global layout builder.

Peter Collingbourne peter at pcc.me.uk
Fri Feb 20 14:43:17 PST 2015

Comment at: lib/Transforms/IPO/LowerBitSets.cpp:552
@@ +551,3 @@
+        [](const std::set<uint64_t> &O1, const std::set<uint64_t> &O2) {
+          return O1.size() < O2.size();
+        });
jfb wrote:
> pcc wrote:
> > jfb wrote:
> > > This won't be deterministic without a tie-breaker?
> > Because I'm using `stable_sort`, it should be as deterministic as `EquivalenceClasses` is. I'm not certain, but it looks like the only non-determinism there relates to the order in which elements are visited (i.e. begin()..end()), not the order in which members of equivalence classes are visited (member_begin()..member_end()). That's a separate problem which we should fix somehow.
> My main concern is that order of iteration of `std::set` isn't stable, am I understanding correctly?
I don't understand. We aren't iterating over `std::set` here. `BitSetMembers` is a `std::vector`.



More information about the llvm-commits mailing list