diff options
author | Krzysztof Parzyszek <kparzysz@quicinc.com> | 2022-08-06 14:29:19 -0500 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@quicinc.com> | 2022-08-06 14:32:52 -0500 |
commit | 2bc390bdd66c9e0bc888f3bbe3eba473a54ff431 (patch) | |
tree | 2942937830978d8a73a9350496586fcdf137cf7d | |
parent | 0c9258612b67153e6760a330eb4cba1233e665b1 (diff) |
[RDF] Use default TargetOperandInfo if not given in constructor
All current in-tree users use the default implementation.
-rw-r--r-- | llvm/include/llvm/CodeGen/RDFGraph.h | 7 | ||||
-rw-r--r-- | llvm/lib/CodeGen/RDFGraph.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp | 3 |
5 files changed, 18 insertions, 6 deletions
diff --git a/llvm/include/llvm/CodeGen/RDFGraph.h b/llvm/include/llvm/CodeGen/RDFGraph.h index a323ee9dc396..4a8428fce20a 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> @@ -644,6 +645,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); NodeBase *ptr(NodeId N) const; @@ -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 df5ec9c3ea3b..4f7457d9efa6 100644 --- a/llvm/lib/CodeGen/RDFGraph.cpp +++ b/llvm/lib/CodeGen/RDFGraph.cpp @@ -648,6 +648,14 @@ bool TargetOperandInfo::isFixedReg(const MachineInstr &In, unsigned OpNum) 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) : MF(mf), TII(tii), TRI(tri), PRI(tri, mf), MDT(mdt), MDF(mdf), TOI(toi), LiveIns(PRI) { diff --git a/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp b/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp index 311e43d77210..b816a7d8d495 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 fb6918949cce..78ab44379af1 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 23976fb1a142..5d9a9231fea9 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(); |