diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/PeepholeOptimizer.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/llvm/lib/CodeGen/PeepholeOptimizer.cpp b/llvm/lib/CodeGen/PeepholeOptimizer.cpp index ae14331d663..98fcc2e2529 100644 --- a/llvm/lib/CodeGen/PeepholeOptimizer.cpp +++ b/llvm/lib/CodeGen/PeepholeOptimizer.cpp @@ -899,7 +899,11 @@ bool PeepholeOptimizer::optimizeCoalescableCopy(MachineInstr *MI) {      if (!findNextSource(NewSrc, NewSubReg) || SrcReg == NewSrc)        continue;      // Rewrite source. -    Changed |= CpyRewriter->RewriteCurrentSource(NewSrc, NewSubReg); +    if (CpyRewriter->RewriteCurrentSource(NewSrc, NewSubReg)) { +      // We may have extended the live-range of NewSrc, account for that. +      MRI->clearKillFlags(NewSrc); +      Changed = true; +    }    }    // TODO: We could have a clean-up method to tidy the instruction.    // E.g., v0 = INSERT_SUBREG v1, v1.sub0, sub0 | 

