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";
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 "
138 "into clusters of basic blocks.",
141 // This function updates and optimizes the branching instructions of every basic
160 // We do not optimize branches for machine basic blocks ending sections, as
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.
196 // With the 'list' option, every basic block is placed in a section
198 // for every basic block in this function (if FuncClusterInfo is empty).
201 // If unique sections are desired for all basic blocks of the function, we
202 // set every basic block's section ID equal to its original position in
203 // the layout (which is equal to its number). This ensures that basic
250 "Entry block should not be displaced by basic block sections");
255 // After reordering basic blocks, we must update basic block branches to
292 // Identify, arrange, and modify basic blocks which need separate sections
300 // were obtained, optimizing basic blocks might be sub-optimal.
302 // clusters of basic blocks using basic block ids. Source drift can
350 // We sort all basic blocks to make sure the basic blocks of every cluster are
365 // If the two basic block are in the same section, the order is decided by
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.
394 // Handle basic block address map after basic block sections are finalized.