mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[IR] Simplify Use::swap. NFCI.
The new implementation makes it clear that there are exactly two conditional stores (after the initial no-op optimization). By contrast the old implementation had seven conditionals, some hidden inside other functions. This commit can change the order of operands in operand lists, hence the tweak to one test case. Differential Revision: https://reviews.llvm.org/D80116
This commit is contained in:
parent
c2587c1d60
commit
a5a47b7afe
@ -17,24 +17,17 @@ void Use::swap(Use &RHS) {
|
||||
if (Val == RHS.Val)
|
||||
return;
|
||||
|
||||
if (Val)
|
||||
removeFromList();
|
||||
std::swap(Val, RHS.Val);
|
||||
std::swap(Next, RHS.Next);
|
||||
std::swap(Prev, RHS.Prev);
|
||||
|
||||
Value *OldVal = Val;
|
||||
if (RHS.Val) {
|
||||
RHS.removeFromList();
|
||||
Val = RHS.Val;
|
||||
Val->addUse(*this);
|
||||
} else {
|
||||
Val = nullptr;
|
||||
}
|
||||
*Prev = this;
|
||||
if (Next)
|
||||
Next->Prev = &Next;
|
||||
|
||||
if (OldVal) {
|
||||
RHS.Val = OldVal;
|
||||
RHS.Val->addUse(RHS);
|
||||
} else {
|
||||
RHS.Val = nullptr;
|
||||
}
|
||||
*RHS.Prev = &RHS;
|
||||
if (RHS.Next)
|
||||
RHS.Next->Prev = &RHS.Next;
|
||||
}
|
||||
|
||||
unsigned Use::getOperandNo() const {
|
||||
|
@ -48,7 +48,7 @@ for.end: ; preds = %for.body, %entry
|
||||
ret void
|
||||
}
|
||||
; CHECK-LABEL: @foo
|
||||
; CHECK: for.body.preheader: ; preds = %entry
|
||||
; CHECK: for.body.preheader:
|
||||
; CHECK: %0 = add i32 %n, -1
|
||||
; CHECK: %1 = sub i32 %0, %m
|
||||
; CHECK: %2 = lshr i32 %1, 2
|
||||
@ -56,7 +56,7 @@ for.end: ; preds = %for.body, %entry
|
||||
; CHECK: %4 = add i32 %3, 3
|
||||
; CHECK: br label %for.body
|
||||
|
||||
; CHECK: for.body: ; preds = %for.body, %for.body.preheader
|
||||
; CHECK: for.body:
|
||||
; CHECK: %indvar = phi i32 [ 0, %for.body.preheader ], [ %indvar.next, %for.body ]
|
||||
; CHECK: %5 = add i32 %m, %indvar
|
||||
; CHECK: %arrayidx = getelementptr inbounds i32, i32* %B, i32 %5
|
||||
|
Loading…
Reference in New Issue
Block a user