18 assert(MBBNumber < MBBInfos.
size() &&
"Unexpected basic block number.");
19 return MBBInfos[MBBNumber].PrimaryCompleted &&
20 MBBInfos[MBBNumber].IncomingCompleted ==
21 MBBInfos[MBBNumber].PrimaryIncoming &&
22 MBBInfos[MBBNumber].IncomingProcessed == MBB->
pred_size();
37 assert(MBBNumber < MBBInfos.
size() &&
"Unexpected basic block number.");
38 MBBInfos[MBBNumber].PrimaryCompleted =
true;
39 MBBInfos[MBBNumber].PrimaryIncoming = MBBInfos[MBBNumber].IncomingProcessed;
42 while (!Workqueue.
empty()) {
45 bool Done = isBlockDone(ActiveMBB);
48 unsigned SuccNumber = Succ->getNumber();
50 "Unexpected basic block number.");
51 if (!isBlockDone(Succ)) {
53 MBBInfos[SuccNumber].IncomingProcessed++;
55 MBBInfos[SuccNumber].IncomingCompleted++;
56 if (isBlockDone(Succ))
68 if (!isBlockDone(MBB))
76 return MBBTraversalOrder;
This class represents lattice values for constants.
unsigned getNumBlockIDs() const
getNumBlockIDs - Return the number of MBB ID's allocated.
void push_back(const T &Elt)
iterator_range< succ_iterator > successors()
void assign(size_type NumElts, const T &Elt)
int getNumber() const
MachineBasicBlocks are uniquely numbered at the function level, unless they're not in a MachineFuncti...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
unsigned pred_size() const
LLVM_NODISCARD bool empty() const
TraversalOrder traverse(MachineFunction &MF)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())