From 564c0a233010cb1ff2f9ee2d4d16870284d72487 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 27 Nov 2008 23:18:11 +0000 Subject: [PATCH] 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 --- lib/Transforms/Utils/Local.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) 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; -- 2.34.1