Skip to content

Commit 7ea0ee3

Browse files
committed
[DomTree] Avoid creating an empty GD to reduce compile time.
1 parent 52e758f commit 7ea0ee3

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

llvm/include/llvm/Support/GenericDomTreeConstruction.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,19 @@ struct SemiNCAInfo {
107107
static SmallVector<NodePtr, 8> getChildren(NodePtr N, BatchUpdatePtr BUI) {
108108
if (BUI)
109109
return BUI->PreViewCFG.template getChildren<Inversed>(N);
110-
GraphDiffT GD;
111-
return GD.template getChildren<Inversed>(N);
110+
return getChildren<Inversed>(N);
111+
}
112+
113+
template <bool Inversed>
114+
static SmallVector<NodePtr, 8> getChildren(NodePtr N) {
115+
using DirectedNodeT =
116+
std::conditional_t<Inversed, Inverse<NodePtr>, NodePtr>;
117+
auto R = children<DirectedNodeT>(N);
118+
SmallVector<NodePtr, 8> Res(detail::reverse_if<!Inversed>(R));
119+
120+
// Remove nullptr children for clang.
121+
llvm::erase_value(Res, nullptr);
122+
return Res;
112123
}
113124

114125
NodePtr getIDom(NodePtr BB) const {

0 commit comments

Comments
 (0)