Lines Matching defs:BB

65 bool MachineSSAUpdater::HasValueForBlock(MachineBasicBlock *BB) const {
66 return getAvailableVals(AV).count(BB);
71 void MachineSSAUpdater::AddAvailableValue(MachineBasicBlock *BB, Register V) {
72 getAvailableVals(AV)[BB] = V;
77 Register MachineSSAUpdater::GetValueAtEndOfBlock(MachineBasicBlock *BB) {
78 return GetValueAtEndOfBlockInternal(BB);
82 Register LookForIdenticalPHI(MachineBasicBlock *BB,
84 if (BB->empty())
87 MachineBasicBlock::iterator I = BB->begin();
94 while (I != BB->end() && I->isPHI()) {
114 static MachineInstrBuilder InsertNewDef(unsigned Opcode, MachineBasicBlock *BB,
120 return BuildMI(*BB, I, DebugLoc(), TII->get(Opcode), NewVR);
130 /// 'use' in BB. Consider code like this:
143 Register MachineSSAUpdater::GetValueInMiddleOfBlock(MachineBasicBlock *BB,
147 if (!HasValueForBlock(BB))
148 return GetValueAtEndOfBlockInternal(BB, ExistingValueOnly);
151 if (BB->pred_empty()) {
157 InsertNewDef(TargetOpcode::IMPLICIT_DEF, BB, BB->getFirstTerminator(),
168 for (MachineBasicBlock *PredBB : BB->predecessors()) {
184 // If an identical PHI is already in BB, just reuse it.
185 Register DupPHI = LookForIdenticalPHI(BB, PredValues);
194 MachineBasicBlock::iterator Loc = BB->empty() ? BB->end() : BB->begin();
196 InsertNewDef(TargetOpcode::PHI, BB, Loc, RegAttrs, MRI, TII);
270 static BlkSucc_iterator BlkSucc_begin(BlkT *BB) { return BB->succ_begin(); }
271 static BlkSucc_iterator BlkSucc_end(BlkT *BB) { return BB->succ_end(); }
302 /// FindPredecessorBlocks - Put the predecessors of BB into the Preds
304 static void FindPredecessorBlocks(MachineBasicBlock *BB,
306 append_range(*Preds, BB->predecessors());
311 static Register GetPoisonVal(MachineBasicBlock *BB,
315 InsertNewDef(TargetOpcode::IMPLICIT_DEF, BB, BB->getFirstNonPHI(),
322 static Register CreateEmptyPHI(MachineBasicBlock *BB, unsigned NumPreds,
324 MachineBasicBlock::iterator Loc = BB->empty() ? BB->end() : BB->begin();
326 InsertNewDef(TargetOpcode::PHI, BB, Loc, Updater->RegAttrs,
370 /// for the specified BB and if so, return it. If not, construct SSA form by
374 MachineSSAUpdater::GetValueAtEndOfBlockInternal(MachineBasicBlock *BB,
377 Register ExistingVal = AvailableVals.lookup(BB);
382 return Impl.GetValue(BB);