Skip to content

Commit c17e88f

Browse files
[Analysis] Remove a workaround for ancient GCC (NFC) (#146550)
The version of GCC mentioned is older than currently required GCC 7.4. The comment about the crash dates back to 2014.
1 parent e79e22c commit c17e88f

File tree

1 file changed

+6
-26
lines changed

1 file changed

+6
-26
lines changed

llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,29 +1632,6 @@ BlockFrequencyInfoImplBase::Scaled64 BlockFrequencyInfoImpl<BT>::discrepancy(
16321632
}
16331633
#endif
16341634

1635-
/// \note This should be a lambda, but that crashes GCC 4.7.
1636-
namespace bfi_detail {
1637-
1638-
template <class BT> struct BlockEdgesAdder {
1639-
using BlockT = BT;
1640-
using LoopData = BlockFrequencyInfoImplBase::LoopData;
1641-
using Successor = GraphTraits<const BlockT *>;
1642-
1643-
const BlockFrequencyInfoImpl<BT> &BFI;
1644-
1645-
explicit BlockEdgesAdder(const BlockFrequencyInfoImpl<BT> &BFI)
1646-
: BFI(BFI) {}
1647-
1648-
void operator()(IrreducibleGraph &G, IrreducibleGraph::IrrNode &Irr,
1649-
const LoopData *OuterLoop) {
1650-
const BlockT *BB = BFI.RPOT[Irr.Node.Index];
1651-
for (const auto *Succ : children<const BlockT *>(BB))
1652-
G.addEdge(Irr, BFI.getNode(Succ), OuterLoop);
1653-
}
1654-
};
1655-
1656-
} // end namespace bfi_detail
1657-
16581635
template <class BT>
16591636
void BlockFrequencyInfoImpl<BT>::computeIrreducibleMass(
16601637
LoopData *OuterLoop, std::list<LoopData>::iterator Insert) {
@@ -1665,9 +1642,12 @@ void BlockFrequencyInfoImpl<BT>::computeIrreducibleMass(
16651642

16661643
using namespace bfi_detail;
16671644

1668-
// Ideally, addBlockEdges() would be declared here as a lambda, but that
1669-
// crashes GCC 4.7.
1670-
BlockEdgesAdder<BT> addBlockEdges(*this);
1645+
auto addBlockEdges = [&](IrreducibleGraph &G, IrreducibleGraph::IrrNode &Irr,
1646+
const LoopData *OuterLoop) {
1647+
const BlockT *BB = RPOT[Irr.Node.Index];
1648+
for (const auto *Succ : children<const BlockT *>(BB))
1649+
G.addEdge(Irr, getNode(Succ), OuterLoop);
1650+
};
16711651
IrreducibleGraph G(*this, OuterLoop, addBlockEdges);
16721652

16731653
for (auto &L : analyzeIrreducible(G, OuterLoop, Insert))

0 commit comments

Comments
 (0)