@@ -23,7 +23,7 @@ namespace fir {
23
23
24
24
template <class NodeTy , bool IsPostDom>
25
25
void IDFCalculator<NodeTy, IsPostDom>::calculate(
26
- llvm::SmallVectorImpl<NodeTy *> &PHIBlocks ) {
26
+ llvm::SmallVectorImpl<NodeTy *> &phiBlocks ) {
27
27
// Use a priority queue keyed on dominator tree level so that inserted nodes
28
28
// are handled from the bottom of the dominator tree upwards. We also augment
29
29
// the level with a DFS number to ensure that the blocks are ordered in a
@@ -35,68 +35,74 @@ void IDFCalculator<NodeTy, IsPostDom>::calculate(
35
35
std::priority_queue<DomTreeNodePair,
36
36
llvm::SmallVector<DomTreeNodePair, 32 >,
37
37
llvm::less_second>;
38
- IDFPriorityQueue PQ ;
38
+ IDFPriorityQueue pq ;
39
39
40
- if (DefBlocks ->empty ())
40
+ if (defBlocks ->empty ())
41
41
return ;
42
-
43
- DT.updateDFSNumbers ();
44
-
45
- for (NodeTy *BB : *DefBlocks) {
46
- if (DomTreeNode *Node = DT.getNode (BB))
47
- PQ.push ({Node, std::make_pair (Node->getLevel (), Node->getDFSNumIn ())});
42
+
43
+ // FIXME: updateDFSNumbers was removed in:
44
+ // https://github.com/llvm/llvm-project/commit/412ae15de49a227de25a695735451f8908ebf999
45
+ // This code should be updated, but it is not clear how. Since the pass
46
+ // is not used currently, add an assert and comment the broken
47
+ // code so that it compiles.
48
+ assert (true && " FIXME, this code should not be run until fixed" );
49
+ // dt.updateDFSNumbers();
50
+
51
+ for (NodeTy *bb : *defBlocks) {
52
+ if (DomTreeNode *node = dt.getNode (bb))
53
+ pq.push ({node, std::make_pair (node->getLevel (), node->getDFSNumIn ())});
48
54
}
49
55
50
- llvm::SmallVector<DomTreeNode *, 32 > Worklist ;
51
- llvm::SmallPtrSet<DomTreeNode *, 32 > VisitedPQ ;
52
- llvm::SmallPtrSet<DomTreeNode *, 32 > VisitedWorklist ;
56
+ llvm::SmallVector<DomTreeNode *, 32 > worklist ;
57
+ llvm::SmallPtrSet<DomTreeNode *, 32 > visitedpq ;
58
+ llvm::SmallPtrSet<DomTreeNode *, 32 > visitedWorklist ;
53
59
54
- while (!PQ .empty ()) {
55
- DomTreeNodePair RootPair = PQ .top ();
56
- PQ .pop ();
57
- DomTreeNode *Root = RootPair .first ;
58
- unsigned RootLevel = RootPair .second .first ;
60
+ while (!pq .empty ()) {
61
+ DomTreeNodePair rootPair = pq .top ();
62
+ pq .pop ();
63
+ DomTreeNode *root = rootPair .first ;
64
+ unsigned rootLevel = rootPair .second .first ;
59
65
60
66
// Walk all dominator tree children of Root, inspecting their CFG edges with
61
67
// targets elsewhere on the dominator tree. Only targets whose level is at
62
68
// most Root's level are added to the iterated dominance frontier of the
63
69
// definition set.
64
70
65
- Worklist .clear ();
66
- Worklist .push_back (Root );
67
- VisitedWorklist .insert (Root );
71
+ worklist .clear ();
72
+ worklist .push_back (root );
73
+ visitedWorklist .insert (root );
68
74
69
- while (!Worklist .empty ()) {
70
- DomTreeNode *Node = Worklist .pop_back_val ();
71
- NodeTy *BB = Node ->getBlock ();
75
+ while (!worklist .empty ()) {
76
+ DomTreeNode *node = worklist .pop_back_val ();
77
+ NodeTy *bb = node ->getBlock ();
72
78
// Succ is the successor in the direction we are calculating IDF, so it is
73
79
// successor for IDF, and predecessor for Reverse IDF.
74
- auto DoWork = [&](NodeTy *Succ ) {
75
- DomTreeNode *SuccNode = DT .getNode (Succ );
80
+ auto doWork = [&](NodeTy *succ ) {
81
+ DomTreeNode *succNode = dt .getNode (succ );
76
82
77
- const unsigned SuccLevel = SuccNode ->getLevel ();
78
- if (SuccLevel > RootLevel )
83
+ const unsigned succLevel = succNode ->getLevel ();
84
+ if (succLevel > rootLevel )
79
85
return ;
80
86
81
- if (!VisitedPQ .insert (SuccNode ).second )
87
+ if (!visitedpq .insert (succNode ).second )
82
88
return ;
83
89
84
- NodeTy *SuccBB = SuccNode ->getBlock ();
85
- if (useLiveIn && !LiveInBlocks ->count (SuccBB ))
90
+ NodeTy *succBB = succNode ->getBlock ();
91
+ if (useLiveIn && !liveInBlocks ->count (succBB ))
86
92
return ;
87
93
88
- PHIBlocks .emplace_back (SuccBB );
89
- if (!DefBlocks ->count (SuccBB ))
90
- PQ .push (std::make_pair (
91
- SuccNode , std::make_pair (SuccLevel, SuccNode ->getDFSNumIn ())));
94
+ phiBlocks .emplace_back (succBB );
95
+ if (!defBlocks ->count (succBB ))
96
+ pq .push (std::make_pair (
97
+ succNode , std::make_pair (succLevel, succNode ->getDFSNumIn ())));
92
98
};
93
99
94
- for (auto *Succ : BB ->getSuccessors ())
95
- DoWork (Succ );
100
+ for (auto *succ : bb ->getSuccessors ())
101
+ doWork (succ );
96
102
97
- for (auto DomChild : *Node ) {
98
- if (VisitedWorklist .insert (DomChild ).second )
99
- Worklist .push_back (DomChild );
103
+ for (auto domChild : *node ) {
104
+ if (visitedWorklist .insert (domChild ).second )
105
+ worklist .push_back (domChild );
100
106
}
101
107
}
102
108
}
0 commit comments