mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 21:50:40 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268805 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bcb4c00b78
commit
3783c29658
@ -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)
|
||||
|
@ -300,6 +300,17 @@ TEST(LiveIntervalTest, MoveDownKillFollowing) {
|
||||
});
|
||||
}
|
||||
|
||||
TEST(LiveIntervalTest, MoveUndefUse) {
|
||||
liveIntervalTest(
|
||||
" %0 = IMPLICIT_DEF\n"
|
||||
" NOOP implicit undef %0\n"
|
||||
" NOOP implicit %0\n"
|
||||
" NOOP\n",
|
||||
[](MachineFunction &MF, LiveIntervals &LIS) {
|
||||
testHandleMove(MF, LIS, 1, 3);
|
||||
});
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
initLLVM();
|
||||
|
Loading…
Reference in New Issue
Block a user