/// 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; }