From 30156524734c5a4ac49a1e8c607c375346770fa5 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Tue, 15 Jul 2008 09:00:17 +0000 Subject: [PATCH] Split DAE::MarkLive into MarkLive and PropagateLiveness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53600 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/DeadArgumentElimination.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index d2a5f28cb74..11c083b393c 100644 --- a/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -134,6 +134,7 @@ namespace { const UseVector &MaybeLiveUses); void MarkLive(const RetOrArg &RA); void MarkLive(const Function &F); + void PropagateLiveness(const RetOrArg &RA); bool RemoveDeadStuffFromFunction(Function *F); bool DeleteDeadVarargs(Function &Fn); }; @@ -545,7 +546,12 @@ void DAE::MarkLive(const RetOrArg &RA) { return; // We were already marked Live. DOUT << "DAE - Marking " << RA.getDescription() << " live\n"; + PropagateLiveness(RA); +} +/// PropagateLiveness - Given that RA is a live value, propagate it's liveness +/// to any other values it uses (according to Uses). +void DAE::PropagateLiveness(const RetOrArg &RA) { // We don't use upper_bound (or equal_range) here, because our recursive call // to ourselves is likely to cause the upper_bound (which is the first value // not belonging to RA) to become erased and the iterator invalidated. -- 2.34.1