Lines Matching +full:post +full:-

1 //===- ThreadSafetyTIL.cpp ------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
21 case UOP_Minus: return "-"; in getUnaryOpcodeString()
34 case BOP_Sub: return "-"; in getBinaryOpcodeString()
64 Ph->values().reserveCheck(1, Arena); in addPredecessor()
65 Ph->values().push_back(nullptr); in addPredecessor()
75 Ph->values().reserve(NumPreds, Arena); in reservePredecessors()
85 if (V->kind() == Variable::VK_Let) { in getCanonicalVal()
86 E = V->definition(); in getCanonicalVal()
91 if (Ph->status() == Phi::PH_SingleVal) { in getCanonicalVal()
92 E = Ph->values()[0]; in getCanonicalVal()
103 // The non-const version will simplify incomplete Phi nodes.
107 if (V->kind() != Variable::VK_Let) in simplifyToCanonicalVal()
111 if (til::ThreadSafetyTIL::isTrivial(V->definition())) { in simplifyToCanonicalVal()
112 E = V->definition(); in simplifyToCanonicalVal()
118 if (Ph->status() == Phi::PH_Incomplete) in simplifyToCanonicalVal()
121 if (Ph->status() == Phi::PH_SingleVal) { in simplifyToCanonicalVal()
122 E = Ph->values()[0]; in simplifyToCanonicalVal()
134 assert(Ph && Ph->status() == Phi::PH_Incomplete); in simplifyIncompleteArg()
136 // eliminate infinite recursion -- assume that this node is not redundant. in simplifyIncompleteArg()
137 Ph->setStatus(Phi::PH_MultiVal); in simplifyIncompleteArg()
139 SExpr *E0 = simplifyToCanonicalVal(Ph->values()[0]); in simplifyIncompleteArg()
140 for (unsigned i = 1, n = Ph->values().size(); i < n; ++i) { in simplifyIncompleteArg()
141 SExpr *Ei = simplifyToCanonicalVal(Ph->values()[i]); in simplifyIncompleteArg()
148 Ph->setStatus(Phi::PH_SingleVal); in simplifyIncompleteArg()
154 Arg->setID(this, ID++); in renumberInstrs()
156 Instr->setID(this, ID++); in renumberInstrs()
157 TermInstr->setID(this, ID++); in renumberInstrs()
161 // Sorts the CFGs blocks using a reverse post-order depth-first traversal.
170 ID = Block->topologicalSort(Blocks, ID); in topologicalSort()
174 BlockID = --ID; in topologicalSort()
180 // following back-edges. The dominator is serialized before any predecessors,
182 // before their post-dominator (because it's a reverse topological traversal).
187 // and no blocks are accessible via traversal of back-edges from the exit that
196 ID = DominatorNode.Parent->topologicalFinalSort(Blocks, ID); in topologicalFinalSort()
198 ID = Pred->topologicalFinalSort(Blocks, ID); in topologicalFinalSort()
212 // Skip back-edges in computeDominator()
213 if (Pred->BlockID >= BlockID) continue; in computeDominator()
222 if (Candidate->BlockID > Alternate->BlockID) in computeDominator()
223 Candidate = Candidate->DominatorNode.Parent; in computeDominator()
225 Alternate = Alternate->DominatorNode.Parent; in computeDominator()
232 // Computes the immediate post-dominator of the current block. Assumes that all
233 // of its successors have already computed their post-dominators. This is
237 // Walk back from each predecessor to find the common post-dominator node. in computePostDominator()
239 // Skip back-edges in computePostDominator()
240 if (Succ->BlockID <= BlockID) continue; in computePostDominator()
241 // If we don't yet have a candidate for post-dominator yet, take this one. in computePostDominator()
249 if (Candidate->BlockID < Alternate->BlockID) in computePostDominator()
250 Candidate = Candidate->PostDominatorNode.Parent; in computePostDominator()
252 Alternate = Alternate->PostDominatorNode.Parent; in computePostDominator()
263 InstrID = Block->renumberInstrs(InstrID); in renumberInstrs()
268 BasicBlock::TopologyNode *N = &(B->*TN); in computeNodeSize()
269 if (N->Parent) { in computeNodeSize()
270 BasicBlock::TopologyNode *P = &(N->Parent->*TN); in computeNodeSize()
272 N->NodeID = P->SizeOfSubTree; in computeNodeSize()
273 P->SizeOfSubTree += N->SizeOfSubTree; in computeNodeSize()
279 BasicBlock::TopologyNode *N = &(B->*TN); in computeNodeID()
280 if (N->Parent) { in computeNodeID()
281 BasicBlock::TopologyNode *P = &(N->Parent->*TN); in computeNodeID()
282 N->NodeID += P->NodeID; // Fix NodeIDs relative to starting node. in computeNodeID()
288 // 2) Computing dominators and post-dominators
292 unsigned NumUnreachableBlocks = Entry->topologicalSort(Blocks, Blocks.size()); in computeNormalForm()
296 unsigned NI = I - NumUnreachableBlocks; in computeNormalForm()
298 Blocks[NI]->BlockID = NI; in computeNormalForm()
306 Block->computeDominator(); in computeNormalForm()
309 unsigned NumBlocks = Exit->topologicalFinalSort(Blocks, 0); in computeNormalForm()
316 // Compute post-dominators and compute the sizes of each node in the in computeNormalForm()
319 Block->computePostDominator(); in computeNormalForm()
322 // Compute the sizes of each node in the post-dominator tree and assign IDs in in computeNormalForm()
328 // Assign IDs in the post-dominator tree. in computeNormalForm()