示例#1
0
 /// Add a stack slot that was take-assigned to the inout from an exit BB
 /// to the analysis. If we already have seen a store on this BB, or if the
 /// slot does not match the entry slot, the analysis fails.
 void addExitSlot(AllocStackInst *slot, SILBasicBlock *exitBB) {
   if (Failed) return;
   
   if (TheSlot && slot != TheSlot)
     return setFailed("inout is loaded and stored into different slots");
   if (!ExitBBs.erase(exitBB))
     return setFailed("inout is stored multiple times from same exit BB");
   
   DEBUG(llvm::dbgs() << "    found load from stack slot on exit "
                      << exitBB << '\n');
   TheSlot = slot;
 }