[llvm] c17e88f - [Analysis] Remove a workaround for ancient GCC (NFC) (#146550)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 1 10:42:32 PDT 2025
Author: Kazu Hirata
Date: 2025-07-01T10:42:29-07:00
New Revision: c17e88f07e26247bf876bd7e8057dcd1b89d702c
URL: https://github.com/llvm/llvm-project/commit/c17e88f07e26247bf876bd7e8057dcd1b89d702c
DIFF: https://github.com/llvm/llvm-project/commit/c17e88f07e26247bf876bd7e8057dcd1b89d702c.diff
LOG: [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.
Added:
Modified:
llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
index 66ea5ecbc4bfb..d86760c4f9fe9 100644
--- a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
+++ b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
@@ -1632,29 +1632,6 @@ BlockFrequencyInfoImplBase::Scaled64 BlockFrequencyInfoImpl<BT>::discrepancy(
}
#endif
-/// \note This should be a lambda, but that crashes GCC 4.7.
-namespace bfi_detail {
-
-template <class BT> struct BlockEdgesAdder {
- using BlockT = BT;
- using LoopData = BlockFrequencyInfoImplBase::LoopData;
- using Successor = GraphTraits<const BlockT *>;
-
- const BlockFrequencyInfoImpl<BT> &BFI;
-
- explicit BlockEdgesAdder(const BlockFrequencyInfoImpl<BT> &BFI)
- : BFI(BFI) {}
-
- void operator()(IrreducibleGraph &G, IrreducibleGraph::IrrNode &Irr,
- const LoopData *OuterLoop) {
- const BlockT *BB = BFI.RPOT[Irr.Node.Index];
- for (const auto *Succ : children<const BlockT *>(BB))
- G.addEdge(Irr, BFI.getNode(Succ), OuterLoop);
- }
-};
-
-} // end namespace bfi_detail
-
template <class BT>
void BlockFrequencyInfoImpl<BT>::computeIrreducibleMass(
LoopData *OuterLoop, std::list<LoopData>::iterator Insert) {
@@ -1665,9 +1642,12 @@ void BlockFrequencyInfoImpl<BT>::computeIrreducibleMass(
using namespace bfi_detail;
- // Ideally, addBlockEdges() would be declared here as a lambda, but that
- // crashes GCC 4.7.
- BlockEdgesAdder<BT> addBlockEdges(*this);
+ auto addBlockEdges = [&](IrreducibleGraph &G, IrreducibleGraph::IrrNode &Irr,
+ const LoopData *OuterLoop) {
+ const BlockT *BB = RPOT[Irr.Node.Index];
+ for (const auto *Succ : children<const BlockT *>(BB))
+ G.addEdge(Irr, getNode(Succ), OuterLoop);
+ };
IrreducibleGraph G(*this, OuterLoop, addBlockEdges);
for (auto &L : analyzeIrreducible(G, OuterLoop, Insert))
More information about the llvm-commits
mailing list