Lines Matching defs:Block

626       auto &Block = Func.Blocks[I];
627 if (Block.Flow > 0 && !Visited[I]) {
834 auto &Block = Func.Blocks[Queue.front()];
836 // Process blocks reachable from Block
837 for (auto *Jump : Block.SuccJumps) {
874 for (auto *Block : UnknownBlocks) {
875 if (Block->SuccJumps.empty()) {
882 for (auto *Jump : Block->SuccJumps) {
888 if (NumIgnoredJumps == Block->SuccJumps.size())
927 auto fillInDegree = [&](const FlowBlock *Block) {
928 for (auto *Jump : Block->SuccJumps) {
935 for (auto *Block : UnknownBlocks) {
936 fillInDegree(Block);
946 FlowBlock *Block = &Func.Blocks[Queue.front()];
949 if (DstBlock != nullptr && Block == DstBlock)
953 if (Block->HasUnknownWeight && Block != SrcBlock)
954 AcyclicOrder.push_back(Block);
957 for (auto *Jump : Block->SuccJumps) {
994 for (auto *Block : UnknownBlocks) {
995 assert(Block->HasUnknownWeight && "incorrect unknown subgraph");
997 // Block's flow is the sum of incoming flows
998 for (auto *Jump : Block->PredJumps) {
1001 Block->Flow = BlockFlow;
1002 rebalanceBlock(SrcBlock, DstBlock, Block, BlockFlow);
1009 const FlowBlock *Block, uint64_t BlockFlow) {
1012 for (auto *Jump : Block->SuccJumps) {
1022 // Each of the Block's successors gets the following amount of flow.
1025 for (auto *Jump : Block->SuccJumps) {
1047 const FlowBlock &Block);
1076 auto &Block = Func.Blocks[B];
1084 if (Block.isEntry()) {
1086 } else if (Block.isExit()) {
1091 auto [AuxCostInc, AuxCostDec] = assignBlockCosts(Params, Block);
1095 if (Block.Weight > 0) {
1096 Network.addEdge(Bout, Bin, Block.Weight, AuxCostDec);
1097 Network.addEdge(S1, Bout, Block.Weight, 0);
1098 Network.addEdge(Bin, T1, Block.Weight, 0);
1128 const FlowBlock &Block) {
1130 if (Block.IsUnlikely)
1137 if (Block.HasUnknownWeight) {
1143 if (Block.Weight == 0)
1146 if (Block.isEntry()) {
1214 auto &Block = Func.Blocks[B];
1215 Block.Flow = std::max(OutFlow[B], InFlow[B]);
1233 for (auto &Block : Func.Blocks) {
1235 for (auto &Jump : Block.SuccJumps) {
1241 for (auto &Block : Func.Blocks) {
1242 assert((!Block.isEntry() || !Block.isExit()) &&
1246 for (auto &Block : Func.Blocks) {
1247 assert((!Block.HasUnknownWeight || Block.Weight == 0 || Block.isEntry()) &&
1270 auto &Block = Func.Blocks[I];
1271 if (Block.isEntry()) {
1272 TotalInFlow += Block.Flow;
1273 assert(Block.Flow == OutFlow[I] && "incorrectly computed control flow");
1274 } else if (Block.isExit()) {
1275 TotalOutFlow += Block.Flow;
1276 assert(Block.Flow == InFlow[I] && "incorrectly computed control flow");
1278 assert(Block.Flow == OutFlow[I] && "incorrectly computed control flow");
1279 assert(Block.Flow == InFlow[I] && "incorrectly computed control flow");
1313 auto &Block = Func.Blocks[I];
1314 assert((Visited[I] || Block.Flow == 0) && "an isolated flow component");
1326 for (FlowBlock &Block : Func.Blocks) {
1327 if (Block.Weight > 0)
1329 Block.Flow = Block.Weight;