From: Chris Lattner Date: Thu, 27 Nov 2008 23:18:11 +0000 (+0000) Subject: enhance RecursivelyDeleteTriviallyDeadInstructions to make X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=564c0a233010cb1ff2f9ee2d4d16870284d72487;p=oota-llvm.git enhance RecursivelyDeleteTriviallyDeadInstructions to make PHIs dead if they are single-value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60194 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index 1e1b3869446..cab7f03ab0f 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -190,6 +190,15 @@ void llvm::RecursivelyDeleteTriviallyDeadInstructions(Value *V, while (!Insts.empty()) { I = *Insts.begin(); Insts.erase(I); + + // If this is a PHI node, we may be able to make it dead if we know all the + // input values are the same. + if (PHINode *PN = dyn_cast(I)) { + if (Value *PNV = PN->hasConstantValue()) + PN->replaceAllUsesWith(PNV); + } + + // Okay, if the instruction is dead, delete it. if (!isInstructionTriviallyDead(I)) continue;