Home | History | Annotate | Download | only in WebAssembly

Lines Matching defs:Blocks

66 /// Implements the relooper algorithm for a function's blocks.
69 /// ownership of the blocks and shapes, and frees them when done.
72 std::deque<Block *> Blocks;
125 for (Block *B : R.Blocks) {
191 for (auto Curr : Blocks)
199 Blocks.push_back(New);
249 // Split the node (for simplicity, we replace all the blocks, even
284 // Add incoming branches from live blocks, ignoring dead code
285 for (unsigned i = 0; i < Blocks.size(); i++) {
286 Block *Curr = Blocks[i];
342 Shape *MakeSimple(BlockSet &Blocks, Block *Inner, BlockSet &NextEntries) {
348 if (Blocks.size() > 1) {
349 Blocks.remove(Inner);
350 GetBlocksOut(Inner, NextEntries, &Blocks);
359 Shape *MakeLoop(BlockSet &Blocks, BlockSet &Entries,
361 // Find the inner blocks in this loop. Proceed backwards from the entries
372 Blocks.remove(Curr);
407 // independent group is the entry itself, plus all the blocks it can
410 // @param Ignore - previous blocks that are irrelevant
498 // Having processed all the interesting blocks, we remain with just one
532 Shape *MakeMultiple(BlockSet &Blocks, BlockSet &Entries,
546 // Remove the block from the remaining blocks
547 Blocks.remove(CurrInner);
580 // Process a set of blocks with specified entries, returns a shape
582 // those are the entries for the ->Next block on them, and the blocks
583 // are what remains in Blocks (which Make* modify). In this way
586 Shape *Process(BlockSet &Blocks, BlockSet &InitialEntries, Shape *Prev) {
613 Make(MakeSimple(Blocks, Curr, *NextEntries));
619 Make(MakeLoop(Blocks, *Entries, *NextEntries));
626 // independent blocks from an entry/ies. It is important to remove
704 Make(MakeMultiple(Blocks, *Entries, IndependentGroups, Prev,
711 Make(MakeLoop(Blocks, *Entries, *NextEntries));
760 // Find the blocks that natural control flow can get us directly to, or
870 Target)) { // note: cannot handle split blocks