[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