[llvm] 2bc390b - [RDF] Use default TargetOperandInfo if not given in constructor
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 6 12:33:40 PDT 2022
Author: Krzysztof Parzyszek
Date: 2022-08-06T14:32:52-05:00
New Revision: 2bc390bdd66c9e0bc888f3bbe3eba473a54ff431
URL: https://github.com/llvm/llvm-project/commit/2bc390bdd66c9e0bc888f3bbe3eba473a54ff431
DIFF: https://github.com/llvm/llvm-project/commit/2bc390bdd66c9e0bc888f3bbe3eba473a54ff431.diff
LOG: [RDF] Use default TargetOperandInfo if not given in constructor
All current in-tree users use the default implementation.
Added:
Modified:
llvm/include/llvm/CodeGen/RDFGraph.h
llvm/lib/CodeGen/RDFGraph.cpp
llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/CodeGen/RDFGraph.h b/llvm/include/llvm/CodeGen/RDFGraph.h
index a323ee9dc396d..4a8428fce20ae 100644
--- a/llvm/include/llvm/CodeGen/RDFGraph.h
+++ b/llvm/include/llvm/CodeGen/RDFGraph.h
@@ -233,6 +233,7 @@
#include <cstdint>
#include <cstring>
#include <map>
+#include <memory>
#include <set>
#include <unordered_map>
#include <utility>
@@ -642,6 +643,9 @@ namespace rdf {
};
struct DataFlowGraph {
+ DataFlowGraph(MachineFunction &mf, const TargetInstrInfo &tii,
+ const TargetRegisterInfo &tri, const MachineDominatorTree &mdt,
+ const MachineDominanceFrontier &mdf);
DataFlowGraph(MachineFunction &mf, const TargetInstrInfo &tii,
const TargetRegisterInfo &tri, const MachineDominatorTree &mdt,
const MachineDominanceFrontier &mdf, const TargetOperandInfo &toi);
@@ -861,6 +865,9 @@ namespace rdf {
IA.Addr->removeMember(RA, *this);
}
+ // Default TOI object, if not given in the constructor.
+ std::unique_ptr<TargetOperandInfo> DefaultTOI;
+
MachineFunction &MF;
const TargetInstrInfo &TII;
const TargetRegisterInfo &TRI;
diff --git a/llvm/lib/CodeGen/RDFGraph.cpp b/llvm/lib/CodeGen/RDFGraph.cpp
index df5ec9c3ea3bb..4f7457d9efa6a 100644
--- a/llvm/lib/CodeGen/RDFGraph.cpp
+++ b/llvm/lib/CodeGen/RDFGraph.cpp
@@ -646,6 +646,14 @@ bool TargetOperandInfo::isFixedReg(const MachineInstr &In, unsigned OpNum)
// The data flow graph construction.
//
+DataFlowGraph::DataFlowGraph(MachineFunction &mf, const TargetInstrInfo &tii,
+ const TargetRegisterInfo &tri, const MachineDominatorTree &mdt,
+ const MachineDominanceFrontier &mdf)
+ : DefaultTOI(std::make_unique<TargetOperandInfo>(tii)), MF(mf), TII(tii),
+ TRI(tri), PRI(tri, mf), MDT(mdt), MDF(mdf), TOI(*DefaultTOI),
+ LiveIns(PRI) {
+}
+
DataFlowGraph::DataFlowGraph(MachineFunction &mf, const TargetInstrInfo &tii,
const TargetRegisterInfo &tri, const MachineDominatorTree &mdt,
const MachineDominanceFrontier &mdf, const TargetOperandInfo &toi)
diff --git a/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp b/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
index 311e43d772101..b816a7d8d495e 100644
--- a/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
@@ -863,9 +863,8 @@ bool HexagonOptAddrMode::runOnMachineFunction(MachineFunction &MF) {
HRI = HST.getRegisterInfo();
const auto &MDF = getAnalysis<MachineDominanceFrontier>();
MDT = &getAnalysis<MachineDominatorTree>();
- const TargetOperandInfo TOI(*HII);
- DataFlowGraph G(MF, *HII, *HRI, *MDT, MDF, TOI);
+ DataFlowGraph G(MF, *HII, *HRI, *MDT, MDF);
// Need to keep dead phis because we can propagate uses of registers into
// nodes dominated by those would-be phis.
G.build(BuildOptions::KeepDeadPhis);
diff --git a/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp b/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
index fb6918949cce8..78ab44379af18 100644
--- a/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
@@ -299,8 +299,7 @@ bool HexagonRDFOpt::runOnMachineFunction(MachineFunction &MF) {
if (RDFDump)
MF.print(dbgs() << "Before " << getPassName() << "\n", nullptr);
- TargetOperandInfo TOI(HII);
- DataFlowGraph G(MF, HII, HRI, *MDT, MDF, TOI);
+ DataFlowGraph G(MF, HII, HRI, *MDT, MDF);
// Dead phi nodes are necessary for copy propagation: we can add a use
// of a register in a block where it would need a phi node, but which
// was dead (and removed) during the graph build time.
diff --git a/llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp b/llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp
index 23976fb1a1426..5d9a9231fea9b 100644
--- a/llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp
+++ b/llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp
@@ -331,8 +331,7 @@ X86LoadValueInjectionLoadHardeningPass::getGadgetGraph(
using namespace rdf;
// Build the Register Dataflow Graph using the RDF framework
- TargetOperandInfo TOI{*TII};
- DataFlowGraph DFG{MF, *TII, *TRI, MDT, MDF, TOI};
+ DataFlowGraph DFG{MF, *TII, *TRI, MDT, MDF};
DFG.build();
Liveness L{MF.getRegInfo(), DFG};
L.computePhiInfo();
More information about the llvm-commits
mailing list