diff options
-rw-r--r-- | lib/Target/JSBackend/AllocaManager.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/Target/JSBackend/AllocaManager.cpp b/lib/Target/JSBackend/AllocaManager.cpp index a77ddc7324..aac7abdec3 100644 --- a/lib/Target/JSBackend/AllocaManager.cpp +++ b/lib/Target/JSBackend/AllocaManager.cpp @@ -247,9 +247,8 @@ void AllocaManager::computeInterBlockLiveness() { } // If it contains new live blocks, prepare to propagate them. - if (Temp.test(BLI.LiveIn)) { - BLI.LiveIn |= Temp; - Temp.reset(BLI.End); + Temp.reset(BLI.End); + if (Temp.test(BLI.LiveOut)) { BLI.LiveOut |= Temp; for (succ_const_iterator SI = succ_begin(BB), SE = succ_end(BB); SI != SE; ++SI) { @@ -265,10 +264,9 @@ void AllocaManager::computeInterBlockLiveness() { } // If it contains new live blocks, prepare to propagate them. - if (Temp.test(BLI.LiveOut)) { - // TODO: As above, what are the semantics of a standalone lifetime end? - BLI.LiveOut |= Temp; - Temp.reset(BLI.Start); + // TODO: As above, what are the semantics of a standalone lifetime end? + Temp.reset(BLI.Start); + if (Temp.test(BLI.LiveIn)) { BLI.LiveIn |= Temp; for (const_pred_iterator PI = pred_begin(BB), PE = pred_end(BB); PI != PE; ++PI) { |