Lines Matching defs:Blocks
112 ArrayRef<BasicBlock *> Blocks;
118 LockstepReverseIterator(ArrayRef<BasicBlock *> Blocks) : Blocks(Blocks) {
125 for (BasicBlock *BB : Blocks)
128 for (BasicBlock *BB : Blocks) {
144 // ActiveBlocks will be later copied to Blocks using std::copy. The
145 // resultant order of elements in Blocks needs to be deterministic.
147 // copying. And we cannot simply sort Blocks as they need to match the
151 void restrictToBlocks(SmallSetVector<BasicBlock *, 4> &Blocks) {
153 if (!Blocks.contains((*II)->getParent())) {
192 SmallVector<BasicBlock *, 4> Blocks;
210 OS << "<Candidate Cost=" << C.Cost << " #Blocks=" << C.NumBlocks
223 SmallVector<BasicBlock *, 4> Blocks;
232 // As the Values and Blocks are populated in a deterministic order.
245 Blocks.push_back(P.first);
261 assert(Values.size() > 1 && Blocks.size() > 1 &&
267 assert(llvm::is_sorted(Blocks, ComesBefore));
271 assert(cast<Instruction>(V)->getParent() == Blocks[C]);
281 // The order of Values and Blocks are already ordered by the caller.
283 llvm::copy(B, std::back_inserter(Blocks));
291 llvm::copy(B, std::back_inserter(Blocks));
297 /// \c NewBlocks must be a subset of \c this->Blocks.
299 auto BI = Blocks.begin();
301 while (BI != Blocks.end()) {
304 BI = Blocks.erase(BI);
311 assert(Blocks.size() == NewBlocks.size());
336 return Values == Other.Values && Blocks == Other.Blocks;
656 /// Perform the actual mechanics of sinking an instruction from Blocks into
658 void sinkLastInstruction(ArrayRef<BasicBlock *> Blocks, BasicBlock *BBEnd);
797 append_range(Cand.Blocks, ActivePreds);
860 if (C.Blocks.size() < NumOrigPreds) {
863 InsertBB = SplitBlockPredecessors(BBEnd, C.Blocks, ".gvnsink.split");
872 sinkLastInstruction(C.Blocks, InsertBB);
877 void GVNSink::sinkLastInstruction(ArrayRef<BasicBlock *> Blocks,
880 for (BasicBlock *BB : Blocks)