Lines Matching full:basic
11 // The purpose of this pass is to assign sections to basic blocks when
13 // only the subset of basic blocks with profiles are placed in separate sections
17 // Basic Block Sections
21 // clusters of basic blocks. Every cluster will be emitted into a separate
22 // section with its basic blocks sequenced in the given order. To get the
28 // of 6 basic blocks 0, 1, ..., 5).
33 // * Basic blocks 0 and 2 are placed in one section with symbol `foo`
35 // * Basic blocks 1, 3, 5 are placed in a separate section. A new symbol
37 // * Basic block 4 (note that it is not referenced in the list) is placed in
42 // 1. The last basic block of every cluster should not have any implicit
43 // fallthrough to its next basic block, as it can be reordered by the linker.
55 // needs special handling with basic block sections. DebugInfo needs to be
56 // emitted with more relocations as basic block sections can break a
60 // Basic Block Address Map
66 // the corresponding basic blocks. This logic is implemented in AsmPrinter. This
91 cl::desc("The text prefix to use for cold basic block clusters"),
113 return "Basic Block Sections Analysis"; in getPassName()
118 /// Identify basic blocks that need separate sections and prepare to emit them
132 "Prepares for basic block sections, by splitting functions "
133 "into clusters of basic blocks.",
137 "Prepares for basic block sections, by splitting functions " in INITIALIZE_PASS_DEPENDENCY()
138 "into clusters of basic blocks.", in INITIALIZE_PASS_DEPENDENCY()
141 // This function updates and optimizes the branching instructions of every basic in INITIALIZE_PASS_DEPENDENCY()
160 // We do not optimize branches for machine basic blocks ending sections, as in INITIALIZE_PASS_DEPENDENCY()
175 // This function sorts basic blocks according to the cluster's information.
176 // All explicitly specified clusters of basic blocks will be ordered
182 // FuncClusterInfo represents the cluster information for basic blocks. It
183 // maps from BBID of basic blocks to their cluster information. If this is
184 // empty, it means unique sections for all basic blocks in the function.
195 // With the 'all' option, every basic block is placed in a unique section. in assignSections()
196 // With the 'list' option, every basic block is placed in a section in assignSections()
198 // for every basic block in this function (if FuncClusterInfo is empty). in assignSections()
201 // If unique sections are desired for all basic blocks of the function, we in assignSections()
202 // set every basic block's section ID equal to its original position in in assignSections()
203 // the layout (which is equal to its number). This ensures that basic in assignSections()
250 "Entry block should not be displaced by basic block sections"); in sortBasicBlocksAndUpdateBranches()
255 // After reordering basic blocks, we must update basic block branches to in sortBasicBlocksAndUpdateBranches()
292 // Identify, arrange, and modify basic blocks which need separate sections
300 // were obtained, optimizing basic blocks might be sub-optimal. in handleBBSections()
302 // clusters of basic blocks using basic block ids. Source drift can in handleBBSections()
350 // We sort all basic blocks to make sure the basic blocks of every cluster are in handleBBSections()
365 // If the two basic block are in the same section, the order is decided by in handleBBSections()
378 // When the BB address map needs to be generated, this renumbers basic blocks to
380 // avoids the need to store basic block IDs in the BB address map section, since
392 // First handle the basic block sections. in runOnMachineFunction()
394 // Handle basic block address map after basic block sections are finalized. in runOnMachineFunction()