Skip to content

Commit daf81a6

Browse files
authored
[DFAJumpThreading] Pretty print anonymous blocks (#162607)
We previously printed the address of anonymous blocks, which makes no sense for debugging. This patch ensures consistency with the IR printer.
1 parent aeed686 commit daf81a6

File tree

3 files changed

+24
-30
lines changed

3 files changed

+24
-30
lines changed

llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
#include "llvm/ADT/APInt.h"
6262
#include "llvm/ADT/DenseMap.h"
6363
#include "llvm/ADT/Statistic.h"
64+
#include "llvm/ADT/StringExtras.h"
6465
#include "llvm/Analysis/AssumptionCache.h"
6566
#include "llvm/Analysis/CodeMetrics.h"
6667
#include "llvm/Analysis/DomTreeUpdater.h"
@@ -382,16 +383,9 @@ typedef DenseMap<BasicBlock *, CloneList> DuplicateBlockMap;
382383
typedef MapVector<Instruction *, std::vector<Instruction *>> DefMap;
383384

384385
inline raw_ostream &operator<<(raw_ostream &OS, const PathType &Path) {
385-
OS << "< ";
386-
for (const BasicBlock *BB : Path) {
387-
std::string BBName;
388-
if (BB->hasName())
389-
raw_string_ostream(BBName) << BB->getName();
390-
else
391-
raw_string_ostream(BBName) << BB;
392-
OS << BBName << " ";
393-
}
394-
OS << ">";
386+
auto BBNames = llvm::map_range(
387+
Path, [](const BasicBlock *BB) { return BB->getNameOrAsOperand(); });
388+
OS << "< " << llvm::join(BBNames, ", ") << " >";
395389
return OS;
396390
}
397391

@@ -423,7 +417,7 @@ struct ThreadingPath {
423417
}
424418

425419
void print(raw_ostream &OS) const {
426-
OS << Path << " [ " << ExitVal << ", " << DBB->getName() << " ]";
420+
OS << Path << " [ " << ExitVal << ", " << DBB->getNameOrAsOperand() << " ]";
427421
}
428422

429423
private:

llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
; state, and the block that determines the next state.
88
; < path of BBs that form a cycle > [ state, determinator ]
99
define i32 @test1(i32 %num) !prof !0{
10-
; CHECK: < case2 for.inc for.body > [ 1, for.inc ]
11-
; CHECK-NEXT: < for.inc for.body > [ 1, for.inc ]
12-
; CHECK-NEXT: < case1 for.inc for.body > [ 2, for.inc ]
13-
; CHECK-NEXT: < case2 sel.si.unfold.false for.inc for.body > [ 2, sel.si.unfold.false ]
10+
; CHECK: < case2, for.inc, for.body > [ 1, for.inc ]
11+
; CHECK-NEXT: < for.inc, for.body > [ 1, for.inc ]
12+
; CHECK-NEXT: < case1, for.inc, for.body > [ 2, for.inc ]
13+
; CHECK-NEXT: < case2, sel.si.unfold.false, for.inc, for.body > [ 2, sel.si.unfold.false ]
1414
entry:
1515
br label %for.body
1616

@@ -47,12 +47,12 @@ for.end:
4747
; complicated CFG. Here the FSM is represented as a nested loop, with
4848
; fallthrough cases.
4949
define i32 @test2(i32 %init) {
50-
; CHECK: < loop.1.backedge loop.1 loop.2 loop.3 > [ 1, loop.1 ]
51-
; CHECK-NEXT: < case4 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 2, loop.1.backedge ]
52-
; CHECK-NEXT: < case2 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 4, loop.1.backedge ]
53-
; CHECK-NEXT: < case4 loop.2.backedge loop.2 loop.3 > [ 3, loop.2.backedge ]
54-
; CHECK-NEXT: < case3 loop.2.backedge loop.2 loop.3 > [ 0, loop.2.backedge ]
55-
; CHECK-NEXT: < case2 loop.3 > [ 3, loop.3 ]
50+
; CHECK: < loop.1.backedge, loop.1, loop.2, loop.3 > [ 1, loop.1 ]
51+
; CHECK-NEXT: < case4, loop.1.backedge, state.1.be2.si.unfold.false, loop.1, loop.2, loop.3 > [ 2, loop.1.backedge ]
52+
; CHECK-NEXT: < case2, loop.1.backedge, state.1.be2.si.unfold.false, loop.1, loop.2, loop.3 > [ 4, loop.1.backedge ]
53+
; CHECK-NEXT: < case4, loop.2.backedge, loop.2, loop.3 > [ 3, loop.2.backedge ]
54+
; CHECK-NEXT: < case3, loop.2.backedge, loop.2, loop.3 > [ 0, loop.2.backedge ]
55+
; CHECK-NEXT: < case2, loop.3 > [ 3, loop.3 ]
5656
entry:
5757
%cmp = icmp eq i32 %init, 0
5858
%sel = select i1 %cmp, i32 0, i32 2
@@ -187,12 +187,12 @@ bb66: ; preds = %bb59
187187

188188
; Value %init is not predictable but it's okay since it is the value initial to the switch.
189189
define i32 @initial.value.positive1(i32 %init) !prof !0 {
190-
; CHECK: < loop.1.backedge loop.1 loop.2 loop.3 > [ 1, loop.1 ]
191-
; CHECK-NEXT: < case4 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 2, loop.1.backedge ]
192-
; CHECK-NEXT: < case2 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 4, loop.1.backedge ]
193-
; CHECK-NEXT: < case4 loop.2.backedge loop.2 loop.3 > [ 3, loop.2.backedge ]
194-
; CHECK-NEXT: < case3 loop.2.backedge loop.2 loop.3 > [ 0, loop.2.backedge ]
195-
; CHECK-NEXT: < case2 loop.3 > [ 3, loop.3 ]
190+
; CHECK: < loop.1.backedge, loop.1, loop.2, loop.3 > [ 1, loop.1 ]
191+
; CHECK-NEXT: < case4, loop.1.backedge, state.1.be2.si.unfold.false, loop.1, loop.2, loop.3 > [ 2, loop.1.backedge ]
192+
; CHECK-NEXT: < case2, loop.1.backedge, state.1.be2.si.unfold.false, loop.1, loop.2, loop.3 > [ 4, loop.1.backedge ]
193+
; CHECK-NEXT: < case4, loop.2.backedge, loop.2, loop.3 > [ 3, loop.2.backedge ]
194+
; CHECK-NEXT: < case3, loop.2.backedge, loop.2, loop.3 > [ 0, loop.2.backedge ]
195+
; CHECK-NEXT: < case2, loop.3 > [ 3, loop.3 ]
196196
entry:
197197
%cmp = icmp eq i32 %init, 0
198198
br label %loop.1

llvm/test/Transforms/DFAJumpThreading/max-path-length.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
; too long so that it is not jump-threaded.
1010
define i32 @max_path_length(i32 %num) {
1111
; CHECK-NOT: 3, case1
12-
; CHECK: < case2 for.inc for.body > [ 1, for.inc ]
13-
; CHECK-NEXT: < for.inc for.body > [ 1, for.inc ]
14-
; CHECK-NEXT: < case2 sel.si.unfold.false for.inc for.body > [ 2, sel.si.unfold.false ]
12+
; CHECK: < case2, for.inc, for.body > [ 1, for.inc ]
13+
; CHECK-NEXT: < for.inc, for.body > [ 1, for.inc ]
14+
; CHECK-NEXT: < case2, sel.si.unfold.false, for.inc, for.body > [ 2, sel.si.unfold.false ]
1515
; CHECK-NEXT: DFA-JT: Renaming non-local uses of:
1616
entry:
1717
br label %for.body

0 commit comments

Comments
 (0)