mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-26 05:56:51 +00:00
Revert r216803 "[MachineSinking] Clear kill flag of all operands at all their uses."
This reverts commit r216803, because it might have broken the buildbot. The issue is tracked in PR20842. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217120 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
319b5d0e8e
commit
cd72c216cd
@ -724,19 +724,9 @@ bool MachineSinking::SinkInstruction(MachineInstr *MI, bool &SawStore) {
|
||||
++MachineBasicBlock::iterator(DbgMI));
|
||||
}
|
||||
|
||||
// When sinking the instruction the live time of its operands can be extended
|
||||
// bejond their original last use (marked with a kill flag). Conservatively
|
||||
// clear the kill flag in all instructions that use the same operand
|
||||
// registers.
|
||||
for (auto &MO : MI->uses())
|
||||
if (MO.isReg() && MO.isUse()) {
|
||||
// Preserve the kill flag for this instruction.
|
||||
bool IsKill = MO.isKill();
|
||||
// Clear the kill flag in all instruction that use this operand.
|
||||
MRI->clearKillFlags(MO.getReg());
|
||||
// Restore the kill flag for only this instruction.
|
||||
MO.setIsKill(IsKill);
|
||||
}
|
||||
// Conservatively, clear any kill flags, since it's possible that they are no
|
||||
// longer correct.
|
||||
MI->clearKillInfo();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
; RUN: llc -mtriple=aarch64-apple-darwin -fast-isel -verify-machineinstrs < %s
|
||||
|
||||
define void @test() {
|
||||
%sext = shl i64 undef, 32
|
||||
%1 = ashr exact i64 %sext, 32
|
||||
%2 = icmp sgt i64 undef, %1
|
||||
br i1 %2, label %3, label %.critedge1
|
||||
|
||||
; <label>:3 ; preds = %0
|
||||
%4 = getelementptr inbounds i32* undef, i64 %1
|
||||
%5 = load i32* %4, align 4
|
||||
br i1 undef, label %6, label %.critedge1
|
||||
|
||||
; <label>:6 ; preds = %3
|
||||
%7 = and i32 %5, 255
|
||||
%8 = icmp eq i32 %7, 255
|
||||
br i1 %8, label %.lr.ph, label %._crit_edge
|
||||
|
||||
.lr.ph: ; preds = %.lr.ph, %6
|
||||
br i1 undef, label %.lr.ph, label %.critedge1
|
||||
|
||||
._crit_edge: ; preds = %6
|
||||
ret void
|
||||
|
||||
.critedge1: ; preds = %.lr.ph, %3, %0
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user