diff options
author | Matthias Braun <matze@braunis.de> | 2016-05-06 21:47:41 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2016-05-06 21:47:41 +0000 |
commit | 71474e8d22ee5d35597456796334b965d0241530 (patch) | |
tree | 24d869357d4258bc0a2a14141acaf413a2083c10 /llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | |
parent | 4a3c3b66d7466ff7d04d92c976a9416876feb422 (diff) | |
download | llvm-71474e8d22ee5d35597456796334b965d0241530.zip llvm-71474e8d22ee5d35597456796334b965d0241530.tar.gz llvm-71474e8d22ee5d35597456796334b965d0241530.tar.bz2 |
LiveIntervalAnalysis: Fix handleMove() extending liverange for undef inputs
Fix handleMove() incorrectly extending liveranges when an undef input of
a vreg was moved past the (current) end of the liverange.
llvm-svn: 268805
Diffstat (limited to 'llvm/lib/CodeGen/LiveIntervalAnalysis.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp index 9b01356..3d22f70 100644 --- a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -939,10 +939,13 @@ public: hasRegMask = true; if (!MO.isReg()) continue; - // Aggressively clear all kill flags. - // They are reinserted by VirtRegRewriter. - if (MO.isUse()) + if (MO.isUse()) { + if (!MO.readsReg()) + continue; + // Aggressively clear all kill flags. + // They are reinserted by VirtRegRewriter. MO.setIsKill(false); + } unsigned Reg = MO.getReg(); if (!Reg) |