Split DAE::MarkLive into MarkLive and PropagateLiveness.
authorMatthijs Kooijman <matthijs@stdin.nl>
Tue, 15 Jul 2008 09:00:17 +0000 (09:00 +0000)
committerMatthijs Kooijman <matthijs@stdin.nl>
Tue, 15 Jul 2008 09:00:17 +0000 (09:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53600 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/DeadArgumentElimination.cpp

index d2a5f28cb74de6b36593ff0c42dae92641bb3ce3..11c083b393c73bd27f8b349a4fe6de9cd365ac29 100644 (file)
@@ -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.