From: Evan Cheng Date: Fri, 9 Mar 2007 09:48:56 +0000 (+0000) Subject: If a virtual register is already marked alive in this block, that means it is X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e2ee99620fa6e428292737349d8e28bbcdcdaa0b;p=oota-llvm.git If a virtual register is already marked alive in this block, that means it is alive in one of the successor block. Do not add it to the kill list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35041 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp index aec62dfcdf6..539799ec585 100644 --- a/lib/CodeGen/LiveVariables.cpp +++ b/lib/CodeGen/LiveVariables.cpp @@ -152,7 +152,12 @@ void LiveVariables::HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB, "Should have kill for defblock!"); // Add a new kill entry for this basic block. - VRInfo.Kills.push_back(MI); + unsigned BBNum = MBB->getNumber(); + // If this virtual register is already marked as alive in this basic block, + // that means it is alive in at least one of the successor block, it's not + // a kill. + if (VRInfo.AliveBlocks.size() <= BBNum || !VRInfo.AliveBlocks[BBNum]) + VRInfo.Kills.push_back(MI); // Update all dominating blocks to mark them known live. for (MachineBasicBlock::const_pred_iterator PI = MBB->pred_begin(),