Skip to content

Commit e96e662

Browse files
committed
Move trivial functions to header
1 parent e6393ee commit e96e662

File tree

2 files changed

+51
-145
lines changed

2 files changed

+51
-145
lines changed

llvm/include/llvm/Analysis/GenericDomTreeUpdater.h

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,61 +22,84 @@ namespace llvm {
2222

2323
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
2424
class GenericDomTreeUpdater {
25-
DerivedT &derived();
26-
const DerivedT &derived() const;
25+
DerivedT &derived() { return *static_cast<DerivedT *>(this); }
26+
const DerivedT &derived() const {
27+
return *static_cast<const DerivedT *>(this);
28+
}
2729

2830
public:
2931
enum class UpdateStrategy : unsigned char { Eager = 0, Lazy = 1 };
3032
using BasicBlockT = typename DomTreeT::NodeType;
3133

32-
explicit GenericDomTreeUpdater(UpdateStrategy Strategy_);
33-
GenericDomTreeUpdater(DomTreeT &DT_, UpdateStrategy Strategy_);
34-
GenericDomTreeUpdater(DomTreeT *DT_, UpdateStrategy Strategy_);
35-
GenericDomTreeUpdater(PostDomTreeT &PDT_, UpdateStrategy Strategy_);
36-
GenericDomTreeUpdater(PostDomTreeT *PDT_, UpdateStrategy Strategy_);
34+
explicit GenericDomTreeUpdater(UpdateStrategy Strategy_)
35+
: Strategy(Strategy_) {}
36+
GenericDomTreeUpdater(DomTreeT &DT_, UpdateStrategy Strategy_)
37+
: DT(&DT_), Strategy(Strategy_) {}
38+
GenericDomTreeUpdater(DomTreeT *DT_, UpdateStrategy Strategy_)
39+
: DT(DT_), Strategy(Strategy_) {}
40+
GenericDomTreeUpdater(PostDomTreeT &PDT_, UpdateStrategy Strategy_)
41+
: PDT(&PDT_), Strategy(Strategy_) {}
42+
GenericDomTreeUpdater(PostDomTreeT *PDT_, UpdateStrategy Strategy_)
43+
: PDT(PDT_), Strategy(Strategy_) {}
3744
GenericDomTreeUpdater(DomTreeT &DT_, PostDomTreeT &PDT_,
38-
UpdateStrategy Strategy_);
45+
UpdateStrategy Strategy_)
46+
: DT(&DT_), PDT(&PDT_), Strategy(Strategy_) {}
3947
GenericDomTreeUpdater(DomTreeT *DT_, PostDomTreeT *PDT_,
40-
UpdateStrategy Strategy_);
48+
UpdateStrategy Strategy_)
49+
: DT(DT_), PDT(PDT_), Strategy(Strategy_) {}
4150

42-
~GenericDomTreeUpdater();
51+
~GenericDomTreeUpdater() { flush(); }
4352

4453
/// Returns true if the current strategy is Lazy.
45-
bool isLazy() const;
54+
bool isLazy() const { return Strategy == UpdateStrategy::Lazy; }
4655

4756
/// Returns true if the current strategy is Eager.
48-
bool isEager() const;
57+
bool isEager() const { return Strategy == UpdateStrategy::Eager; }
4958

5059
/// Returns true if it holds a DomTreeT.
51-
bool hasDomTree() const;
60+
bool hasDomTree() const { return DT != nullptr; }
5261

5362
/// Returns true if it holds a PostDomTreeT.
54-
bool hasPostDomTree() const;
63+
bool hasPostDomTree() const { return PDT != nullptr; }
5564

5665
/// Returns true if there is BasicBlockT awaiting deletion.
5766
/// The deletion will only happen until a flush event and
5867
/// all available trees are up-to-date.
5968
/// Returns false under Eager UpdateStrategy.
60-
bool hasPendingDeletedBB() const;
69+
bool hasPendingDeletedBB() const { return !DeletedBBs.empty(); }
6170

6271
/// Returns true if DelBB is awaiting deletion.
6372
/// Returns false under Eager UpdateStrategy.
64-
bool isBBPendingDeletion(BasicBlockT *DelBB) const;
73+
bool isBBPendingDeletion(BasicBlockT *DelBB) const {
74+
if (Strategy == UpdateStrategy::Eager || DeletedBBs.empty())
75+
return false;
76+
return DeletedBBs.contains(DelBB);
77+
}
6578

6679
/// Returns true if either of DT or PDT is valid and the tree has at
6780
/// least one update pending. If DT or PDT is nullptr it is treated
6881
/// as having no pending updates. This function does not check
6982
/// whether there is MachineBasicBlock awaiting deletion.
7083
/// Returns false under Eager UpdateStrategy.
71-
bool hasPendingUpdates() const;
84+
bool hasPendingUpdates() const {
85+
return hasPendingDomTreeUpdates() || hasPendingPostDomTreeUpdates();
86+
}
7287

7388
/// Returns true if there are DomTreeT updates queued.
7489
/// Returns false under Eager UpdateStrategy or DT is nullptr.
75-
bool hasPendingDomTreeUpdates() const;
90+
bool hasPendingDomTreeUpdates() const {
91+
if (!DT)
92+
return false;
93+
return PendUpdates.size() != PendDTUpdateIndex;
94+
}
7695

7796
/// Returns true if there are PostDomTreeT updates queued.
7897
/// Returns false under Eager UpdateStrategy or PDT is nullptr.
79-
bool hasPendingPostDomTreeUpdates() const;
98+
bool hasPendingPostDomTreeUpdates() const {
99+
if (!PDT)
100+
return false;
101+
return PendUpdates.size() != PendPDTUpdateIndex;
102+
}
80103

81104
///@{
82105
/// \name Mutation APIs
@@ -166,7 +189,11 @@ class GenericDomTreeUpdater {
166189
/// Apply all pending updates to available trees and flush all BasicBlocks
167190
/// awaiting deletion.
168191

169-
void flush();
192+
void flush() {
193+
applyDomTreeUpdates();
194+
applyPostDomTreeUpdates();
195+
dropOutOfDateUpdates();
196+
}
170197

171198
///@}
172199

@@ -185,7 +212,10 @@ class GenericDomTreeUpdater {
185212
bool IsRecalculatingPostDomTree = false;
186213

187214
/// Returns true if the update is self dominance.
188-
bool isSelfDominance(typename DomTreeT::UpdateType Update) const;
215+
bool isSelfDominance(typename DomTreeT::UpdateType Update) const {
216+
// Won't affect DomTree and PostDomTree.
217+
return Update.getFrom() == Update.getTo();
218+
}
189219

190220
/// Helper function to apply all pending DomTree updates.
191221
void applyDomTreeUpdates();

llvm/include/llvm/Analysis/GenericDomTreeUpdaterImpl.h

Lines changed: 0 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -22,116 +22,6 @@
2222

2323
namespace llvm {
2424

25-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
26-
DerivedT &GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::derived() {
27-
return *static_cast<DerivedT *>(this);
28-
}
29-
30-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
31-
const DerivedT &
32-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::derived() const {
33-
return *static_cast<const DerivedT *>(this);
34-
}
35-
36-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
37-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
38-
UpdateStrategy Strategy_)
39-
: Strategy(Strategy_) {}
40-
41-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
42-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
43-
DomTreeT &DT_, UpdateStrategy Strategy_)
44-
: DT(&DT_), Strategy(Strategy_) {}
45-
46-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
47-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
48-
DomTreeT *DT_, UpdateStrategy Strategy_)
49-
: DT(DT_), Strategy(Strategy_) {}
50-
51-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
52-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
53-
PostDomTreeT &PDT_, UpdateStrategy Strategy_)
54-
: PDT(&PDT_), Strategy(Strategy_) {}
55-
56-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
57-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
58-
PostDomTreeT *PDT_, UpdateStrategy Strategy_)
59-
: PDT(PDT_), Strategy(Strategy_) {}
60-
61-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
62-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
63-
DomTreeT &DT_, PostDomTreeT &PDT_, UpdateStrategy Strategy_)
64-
: DT(&DT_), PDT(&PDT_), Strategy(Strategy_) {}
65-
66-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
67-
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::GenericDomTreeUpdater(
68-
DomTreeT *DT_, PostDomTreeT *PDT_, UpdateStrategy Strategy_)
69-
: DT(DT_), PDT(PDT_), Strategy(Strategy_) {}
70-
71-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
72-
GenericDomTreeUpdater<DerivedT, DomTreeT,
73-
PostDomTreeT>::~GenericDomTreeUpdater() {
74-
flush();
75-
}
76-
77-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
78-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::isLazy() const {
79-
return Strategy == UpdateStrategy::Lazy;
80-
}
81-
82-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
83-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::isEager() const {
84-
return Strategy == UpdateStrategy::Eager;
85-
}
86-
87-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
88-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::hasDomTree()
89-
const {
90-
return DT != nullptr;
91-
}
92-
93-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
94-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::hasPostDomTree()
95-
const {
96-
return DT != nullptr;
97-
}
98-
99-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
100-
bool GenericDomTreeUpdater<DerivedT, DomTreeT,
101-
PostDomTreeT>::hasPendingDeletedBB() const {
102-
return !DeletedBBs.empty();
103-
}
104-
105-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
106-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::
107-
isBBPendingDeletion(BasicBlockT *DelBB) const {
108-
if (Strategy == UpdateStrategy::Eager || DeletedBBs.empty())
109-
return false;
110-
return DeletedBBs.contains(DelBB);
111-
}
112-
113-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
114-
bool GenericDomTreeUpdater<DerivedT, DomTreeT,
115-
PostDomTreeT>::hasPendingUpdates() const {
116-
return hasPendingDomTreeUpdates() || hasPendingPostDomTreeUpdates();
117-
}
118-
119-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
120-
bool GenericDomTreeUpdater<DerivedT, DomTreeT,
121-
PostDomTreeT>::hasPendingDomTreeUpdates() const {
122-
if (!DT)
123-
return false;
124-
return PendUpdates.size() != PendDTUpdateIndex;
125-
}
126-
127-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
128-
bool GenericDomTreeUpdater<DerivedT, DomTreeT,
129-
PostDomTreeT>::hasPendingPostDomTreeUpdates() const {
130-
if (!PDT)
131-
return false;
132-
return PendUpdates.size() != PendPDTUpdateIndex;
133-
}
134-
13525
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
13626
template <typename FuncT>
13727
void GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::recalculate(
@@ -258,13 +148,6 @@ GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::getPostDomTree() {
258148
return *PDT;
259149
}
260150

261-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
262-
void GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::flush() {
263-
applyDomTreeUpdates();
264-
applyPostDomTreeUpdates();
265-
dropOutOfDateUpdates();
266-
}
267-
268151
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
269152
LLVM_DUMP_METHOD void
270153
GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::dump() const {
@@ -360,13 +243,6 @@ GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::dump() const {
360243
#endif
361244
}
362245

363-
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
364-
bool GenericDomTreeUpdater<DerivedT, DomTreeT, PostDomTreeT>::isSelfDominance(
365-
typename DomTreeT::UpdateType Update) const {
366-
// Won't affect DomTree and PostDomTree.
367-
return Update.getFrom() == Update.getTo();
368-
}
369-
370246
template <typename DerivedT, typename DomTreeT, typename PostDomTreeT>
371247
void GenericDomTreeUpdater<DerivedT, DomTreeT,
372248
PostDomTreeT>::applyDomTreeUpdates() {

0 commit comments

Comments
 (0)