diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-02-05 20:04:18 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-02-05 20:04:18 +0000 |
commit | 8d78b0597b3931786c0f740098488e07443af7df (patch) | |
tree | 3d072653d2da14a67f9a89a194720d03a9e862ca /llvm/lib/CodeGen/LiveVariables.cpp | |
parent | b170d0cf7eab8895ec403dcb0434d7b56c8f35dc (diff) | |
download | bcm5719-llvm-8d78b0597b3931786c0f740098488e07443af7df.tar.gz bcm5719-llvm-8d78b0597b3931786c0f740098488e07443af7df.zip |
If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).
llvm-svn: 46763
Diffstat (limited to 'llvm/lib/CodeGen/LiveVariables.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LiveVariables.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp index b39e48d4423..70c191d9e09 100644 --- a/llvm/lib/CodeGen/LiveVariables.cpp +++ b/llvm/lib/CodeGen/LiveVariables.cpp @@ -436,8 +436,9 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) { if (MO.isRegister() && MO.isDef() && MO.getReg()) { if (MRegisterInfo::isVirtualRegister(MO.getReg())) { VarInfo &VRInfo = getVarInfo(MO.getReg()); - // Defaults to dead - VRInfo.Kills.push_back(MI); + if (VRInfo.AliveBlocks.none()) + // If vr is not alive in any block, then defaults to dead. + VRInfo.Kills.push_back(MI); } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) && !ReservedRegisters[MO.getReg()]) { HandlePhysRegDef(MO.getReg(), MI); |