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 | |
| parent | 4a3c3b66d7466ff7d04d92c976a9416876feb422 (diff) | |
| download | bcm5719-llvm-71474e8d22ee5d35597456796334b965d0241530.tar.gz bcm5719-llvm-71474e8d22ee5d35597456796334b965d0241530.zip | |
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')
| -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 9b01356a24e..3d22f709a45 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) |

