From: Matt Arsenault Date: Wed, 24 May 2023 10:42:28 +0000 (+0100) Subject: InstSimplify: Remove null parent checks X-Git-Tag: upstream/17.0.6~6311 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ca21e8775dd16189bb4c00c3f9553f17578a63c;p=platform%2Fupstream%2Fllvm.git InstSimplify: Remove null parent checks The feature to operate on incomplete IR was barely used an poorly tested. --- diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 5d5490d..b9a74e3 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -218,12 +218,6 @@ static bool valueDominatesPHI(Value *V, PHINode *P, const DominatorTree *DT) { // Arguments and constants dominate all instructions. return true; - // If we are processing instructions (and/or basic blocks) that have not been - // fully added to a function, the parent nodes may still be null. Simply - // return the conservative answer in these cases. - if (!I->getParent() || !P->getParent() || !I->getFunction()) - return false; - // If we have a DominatorTree then do a precise test. if (DT) return DT->dominates(I, P); @@ -2638,7 +2632,7 @@ static bool isAllocDisjoint(const Value *V) { // that might be resolve lazily to symbols in another dynamically-loaded // library (and, thus, could be malloc'ed by the implementation). if (const AllocaInst *AI = dyn_cast(V)) - return AI->getParent() && AI->getFunction() && AI->isStaticAlloca(); + return AI->isStaticAlloca(); if (const GlobalValue *GV = dyn_cast(V)) return (GV->hasLocalLinkage() || GV->hasHiddenVisibility() || GV->hasProtectedVisibility() || GV->hasGlobalUnnamedAddr()) && @@ -3669,7 +3663,7 @@ static Value *simplifyICmpWithDominatingAssume(CmpInst::Predicate Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q) { // Gracefully handle instructions that have not been inserted yet. - if (!Q.AC || !Q.CxtI || !Q.CxtI->getParent()) + if (!Q.AC || !Q.CxtI) return nullptr; for (Value *AssumeBaseOp : {LHS, RHS}) { @@ -6474,9 +6468,6 @@ static Value *simplifyIntrinsic(CallBase *Call, Value *Callee, if (!NumOperands) { switch (IID) { case Intrinsic::vscale: { - // Call may not be inserted into the IR yet at point of calling simplify. - if (!Call->getParent() || !Call->getParent()->getParent()) - return nullptr; auto Attr = Call->getFunction()->getFnAttribute(Attribute::VScaleRange); if (!Attr.isValid()) return nullptr; @@ -6924,10 +6915,7 @@ static bool replaceAndRecursivelySimplifyImpl( // Replace the instruction with its simplified value. I->replaceAllUsesWith(SimpleV); - // Gracefully handle edge cases where the instruction is not wired into any - // parent block. - if (I->getParent() && !I->isEHPad() && !I->isTerminator() && - !I->mayHaveSideEffects()) + if (!I->isEHPad() && !I->isTerminator() && !I->mayHaveSideEffects()) I->eraseFromParent(); } else { Worklist.insert(I); @@ -6956,10 +6944,7 @@ static bool replaceAndRecursivelySimplifyImpl( // Replace the instruction with its simplified value. I->replaceAllUsesWith(SimpleV); - // Gracefully handle edge cases where the instruction is not wired into any - // parent block. - if (I->getParent() && !I->isEHPad() && !I->isTerminator() && - !I->mayHaveSideEffects()) + if (!I->isEHPad() && !I->isTerminator() && !I->mayHaveSideEffects()) I->eraseFromParent(); } return Simplified;