Lines Matching full:blocks
14 // a topological ordering of basic blocks) in the absence of a *strong* signal
17 // blocks adjacent to each other.
20 // at each stage walks through the basic blocks, trying to coalesce them into
22 // probabilities). Finally, it walks the blocks in topological order, and the
23 // first time it reaches a chain of basic blocks, it schedules them in the
56 static cl::opt<unsigned> AlignAllBlock("align-all-blocks",
58 "blocks in the function."),
68 /// \brief A chain of blocks which will be laid out contiguously.
70 /// This is the datastructure representing a chain of consecutive blocks that
73 /// a sequence of basic blocks which have some external (correctness)
80 /// \brief The sequence of blocks belonging to this chain.
82 /// This is the sequence of blocks for a particular chain. These will be laid
84 SmallVector<MachineBasicBlock *, 4> Blocks;
90 /// basic blocks, and map them back to their associated chains using this
101 : Blocks(1, BB), BlockToChain(BlockToChain), LoopPredecessors(0) {
106 /// \brief Iterator over blocks within the chain.
109 /// \brief Beginning of blocks within the chain.
110 iterator begin() { return Blocks.begin(); }
112 /// \brief End of blocks within the chain.
113 iterator end() { return Blocks.end(); }
118 /// a contiguous sequence of basic blocks, updating the edge list, and
123 assert(!Blocks.empty());
128 Blocks.push_back(BB);
136 // Update the incoming blocks to point to this chain, and add them to the
140 Blocks.push_back(*BI);
141 assert(BlockToChain[*BI] == Chain && "Incoming blocks not in chain");
147 /// \brief Dump the blocks in this chain.
196 /// between basic blocks.
290 // Walk all the blocks in this chain, marking their successors as having
405 blocks already placed.
424 /// blocks and select the most profitable one to place. The definition of
469 /// all of the basic blocks and form a chain due to unnatural loops in the CFG.
470 /// We walk through the function's blocks in order, starting from the
622 // a non-contiguous range of blocks which is Very Bad. So start with the
633 // blocks where rotating to exit with that block will reach an outer loop.
718 // Also, if we have exit blocks which lead to outer loops but didn't select
809 // walk the blocks, and use a set to prevent visiting a particular chain
869 dbgs() << "Loop contains blocks never placed into a chain!\n"
886 // Also, merge any blocks which we cannot reason about and must preserve
964 dbgs() << "Function contains blocks never placed into a chain!\n"
970 // Splice the blocks into place.
1042 // the basic blocks and align the destination of each backedge. We don't rely
1061 // Don't align non-looping basic blocks. These are unlikely to execute
1122 // Align all of the blocks in the function to a specific alignment.