Skip to content

Commit

Permalink
[indvars] Missing variables at Og:
Browse files Browse the repository at this point in the history
https://bugs.llvm.org/show_bug.cgi?id=51735
llvm#51077

Address @SLTozer comments.
- Use captured variables for SSA values.
- Use new insert logic calls.
- Remove not required 'CHECK-NOT'.
  • Loading branch information
CarlosAlbertoEnciso committed Mar 18, 2024
1 parent 0427224 commit ac8a3aa
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 17 deletions.
6 changes: 3 additions & 3 deletions llvm/lib/Transforms/Utils/LoopUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ void llvm::deleteDeadLoop(Loop *L, DominatorTree *DT, ScalarEvolution *SE,
SmallVector<WeakVH> &DbgUsers = L->getDebugInductionVariableDebugUsers();
for (WeakVH &DebugUser : DbgUsers)
if (DebugUser)
dyn_cast<DbgVariableIntrinsic>(DebugUser)->replaceVariableLocationOp(
cast<DbgVariableIntrinsic>(DebugUser)->replaceVariableLocationOp(
0u, FinalValue);
}

Expand Down Expand Up @@ -1435,7 +1435,7 @@ void llvm::addDebugValuesToIncomingValue(BasicBlock *Successor, Value *IndVar,
continue;
auto *Cloned = cast<DbgVariableIntrinsic>(DebugUser->clone());
Cloned->replaceVariableLocationOp(0u, PN);
Cloned->insertBefore(Successor->getFirstNonPHI());
Cloned->insertBefore(*Successor, Successor->getFirstNonPHIIt());
}
}

Expand All @@ -1450,7 +1450,7 @@ void llvm::addDebugValuesToLoopVariable(BasicBlock *Successor, Value *ExitValue,
continue;
auto *Cloned = cast<DbgVariableIntrinsic>(DebugUser->clone());
Cloned->replaceVariableLocationOp(0u, ExitValue);
Cloned->insertBefore(Successor->getFirstNonPHI());
Cloned->insertBefore(*Successor, Successor->getFirstNonPHIIt());
}
}

Expand Down
10 changes: 5 additions & 5 deletions llvm/test/Transforms/IndVarSimplify/pr51735-1.ll
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@
; pass to be used by the 'loop-deletion' pass.

; CHECK: for.cond:
; CHECK: call void @llvm.dbg.value(metadata i32 %Index.0, metadata ![[DBG:[0-9]+]], {{.*}}
; CHECK: call void @llvm.dbg.value(metadata i32 %[[SSA_INDEX_0:.+]], metadata ![[DBG:[0-9]+]], {{.*}}

; CHECK: for.extra:
; CHECK: %call.0 = call noundef i32 @"?nop@@YAHH@Z"(i32 noundef %Index.0), {{.*}}
; CHECK: br i1 %cmp.0, label %for.cond, label %if.else, {{.*}}
; CHECK: %[[SSA_CALL_0:.+]] = call noundef i32 @"?nop@@YAHH@Z"(i32 noundef %[[SSA_INDEX_0]]), {{.*}}
; CHECK: br i1 %[[SSA_CMP_0:.+]], label %for.cond, label %if.else, {{.*}}

; CHECK: if.then:
; CHECK: call void @llvm.dbg.value(metadata i32 777, metadata ![[DBG]], {{.*}}
; CHECK: call void @llvm.dbg.value(metadata i32 %Var.1, metadata ![[VAR:[0-9]+]], {{.*}}
; CHECK: call void @llvm.dbg.value(metadata i32 %[[SSA_VAR_1:.+]], metadata ![[VAR:[0-9]+]], {{.*}}
; CHECK: br label %for.end, {{.*}}

; CHECK: if.else:
; CHECK: call void @llvm.dbg.value(metadata i32 %Var.2, metadata ![[VAR:[0-9]+]], {{.*}}
; CHECK: call void @llvm.dbg.value(metadata i32 %[[SSA_VAR_2:.+]], metadata ![[VAR:[0-9]+]], {{.*}}
; CHECK: br label %for.end, {{.*}}

; CHECK: for.end:
Expand Down
9 changes: 4 additions & 5 deletions llvm/test/Transforms/IndVarSimplify/pr51735-2.ll
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,17 @@

; Only the 'indvars' pass is executed.
; PRE-CHECK: for.cond:
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 %Var.0, metadata ![[DBG]], {{.*}}
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 %[[SSA_VAR_0:.+]], metadata ![[DBG]], {{.*}}
; PRE-CHECK: call void @llvm.dbg.value(metadata !DIArgList{{.*}}

; PRE-CHECK: for.body:
; PRE-CHECK: %cmp1 = icmp eq i32 %Index.0, 666
; PRE-CHECK: %inc = add nsw i32 %Var.0, 1
; PRE-CHECK: %spec.select = select i1 %cmp1, i32 %inc, i32 %Var.0
; PRE-CHECK: %cmp1 = icmp eq i32 %[[SSA_INDEX_0:.+]], 666
; PRE-CHECK: %inc = add nsw i32 %[[SSA_VAR_0]], 1
; PRE-CHECK: %spec.select = select i1 %cmp1, i32 %inc, i32 %[[SSA_VAR_0]]
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 %spec.select, metadata ![[DBG]], {{.*}}
; PRE-CHECK: br label %for.cond

; PRE-CHECK: for.end:
; PRE-CHECK-NOT: call void @llvm.dbg.value
; PRE-CHECK: ret void
; PRE-CHECK-DAG: ![[DBG]] = !DILocalVariable(name: "Var"{{.*}})

Expand Down
7 changes: 3 additions & 4 deletions llvm/test/Transforms/IndVarSimplify/pr51735-3.ll
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,12 @@
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 555, metadata ![[DBG]], {{.*}}

; PRE-CHECK: for.inc:
; PRE-CHECK: %Var.0 = phi i32 [ 1, %for.body ], [ 555, %if.then ]
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 %Var.0, metadata ![[DBG]], {{.*}}
; PRE-CHECK: %inc = add nuw nsw i32 %Index.0, 1
; PRE-CHECK: %[[SSA_VAR_0:.+]] = phi i32 [ 1, %for.body ], [ 555, %if.then ]
; PRE-CHECK: call void @llvm.dbg.value(metadata i32 %[[SSA_VAR_0]], metadata ![[DBG]], {{.*}}
; PRE-CHECK: %inc = add nuw nsw i32 %[[SSA_INDEX_0:.+]], 1
; PRE-CHECK: br label %for.cond

; PRE-CHECK: for.end:
; PRE-CHECK-NOT: call void @llvm.dbg.value
; PRE-CHECK: ret void
; PRE-CHECK-DAG: ![[DBG]] = !DILocalVariable(name: "Var"{{.*}})

Expand Down

0 comments on commit ac8a3aa

Please sign in to comment.