Lines Matching defs:NI
1985 // Check for any extra throws between SI and NI that block DSE. This only
1988 bool mayThrowBetween(Instruction *SI, Instruction *NI,
1996 if (SI->getParent() == NI->getParent())
2001 // Check if \p NI acts as a DSE barrier for \p SI. The following instructions
2006 bool isDSEBarrier(const Value *SILocUnd, Instruction *NI) const {
2007 // If NI may throw it acts as a barrier, unless we are to an alloca/alloca
2009 if (NI->mayThrow() && !InvisibleToCallerBeforeRet.count(SILocUnd))
2012 // If NI is an atomic load/store stronger than monotonic, do not try to
2014 if (NI->isAtomic()) {
2015 if (auto *LI = dyn_cast<LoadInst>(NI))
2017 if (auto *SI = dyn_cast<StoreInst>(NI))
2193 Instruction *NI = NextDef->getMemoryInst();
2194 LLVM_DEBUG(dbgs() << " (" << *NI << ")\n");
2198 if (State.mayThrowBetween(SI, NI, SILocUnd)) {
2205 if (State.isDSEBarrier(SILocUnd, NI)) {
2212 if (!hasAnalyzableMemoryWrite(NI, TLI)) {
2217 if (!isRemovable(NI)) {
2225 MemoryLocation NILoc = *State.getLocForWriteEx(NI);
2231 LLVM_DEBUG(dbgs() << "DSE: Remove Dead Store:\n DEAD: " << *NI
2233 State.deleteDeadInstruction(NI);
2237 // Check if NI overwrites SI.
2241 NI->getParent(), InstOverlapIntervalsTy()));
2244 InstWriteOffset, NI, IOL, AA, &F);
2247 auto *Earlier = dyn_cast<StoreInst>(NI);
2269 LLVM_DEBUG(dbgs() << "DSE: Remove Dead Store:\n DEAD: " << *NI
2271 State.deleteDeadInstruction(NI);