summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO/IPConstantPropagation.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-11-09 20:47:30 +0000
committerChris Lattner <sabre@nondot.org>2004-11-09 20:47:30 +0000
commitc890bfe1da56e3740d633559f3ea9bd33ee6d2f7 (patch)
treea45f851f86833362bc90aaf72b8328b106ef1609 /lib/Transforms/IPO/IPConstantPropagation.cpp
parent8ee9da05ed8d6b6538c1453adaf6f3f1f1366806 (diff)
downloadllvm-c890bfe1da56e3740d633559f3ea9bd33ee6d2f7.tar.gz
llvm-c890bfe1da56e3740d633559f3ea9bd33ee6d2f7.tar.bz2
llvm-c890bfe1da56e3740d633559f3ea9bd33ee6d2f7.tar.xz
Do not let dead constant expressions hanging off of functions prevent IPCP.
This allows to elimination of a bunch of global pool descriptor args from programs being pool allocated (and is also generally useful!) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17657 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO/IPConstantPropagation.cpp')
-rw-r--r--lib/Transforms/IPO/IPConstantPropagation.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/IPConstantPropagation.cpp b/lib/Transforms/IPO/IPConstantPropagation.cpp
index 64d1df8354..a1e09e6bef 100644
--- a/lib/Transforms/IPO/IPConstantPropagation.cpp
+++ b/lib/Transforms/IPO/IPConstantPropagation.cpp
@@ -62,6 +62,9 @@ bool IPCP::runOnModule(Module &M) {
bool IPCP::processFunction(Function &F) {
if (F.aempty() || F.use_empty()) return false; // No arguments? Early exit.
+ // Delete any klingons.
+ F.removeDeadConstantUsers();
+
std::vector<std::pair<Constant*, bool> > ArgumentConstants;
ArgumentConstants.resize(F.asize());