Lines Matching refs:Graph
165 std::unique_ptr<MachineGadgetGraph> Graph) const;
167 std::unique_ptr<MachineGadgetGraph> Graph) const;
172 trimMitigatedEdges(std::unique_ptr<MachineGadgetGraph> Graph) const;
275 std::unique_ptr<MachineGadgetGraph> Graph = getGadgetGraph(MF, MLI, MDT, MDF); in runOnMachineFunction() local
277 if (Graph == nullptr) in runOnMachineFunction()
281 writeGadgetGraph(outs(), MF, Graph.get()); in runOnMachineFunction()
294 writeGadgetGraph(FileOut, MF, Graph.get()); in runOnMachineFunction()
314 FencesInserted = hardenLoadsWithPlugin(MF, std::move(Graph)); in runOnMachineFunction()
316 FencesInserted = hardenLoadsWithHeuristic(MF, std::move(Graph)); in runOnMachineFunction()
596 std::unique_ptr<MachineGadgetGraph> Graph) const { in trimMitigatedEdges()
597 NodeSet ElimNodes{*Graph}; in trimMitigatedEdges()
598 EdgeSet ElimEdges{*Graph}; in trimMitigatedEdges()
600 elimMitigatedEdgesAndNodes(*Graph, ElimEdges, ElimNodes); in trimMitigatedEdges()
602 Graph->NumFences = 0; in trimMitigatedEdges()
603 Graph->NumGadgets = RemainingGadgets; in trimMitigatedEdges()
605 Graph = GraphBuilder::trim(*Graph, ElimNodes, ElimEdges, 0 /* NumFences */, in trimMitigatedEdges()
608 return Graph; in trimMitigatedEdges()
612 MachineFunction &MF, std::unique_ptr<MachineGadgetGraph> Graph) const { in hardenLoadsWithPlugin()
617 Graph = trimMitigatedEdges(std::move(Graph)); in hardenLoadsWithPlugin()
619 if (Graph->NumGadgets == 0) in hardenLoadsWithPlugin()
623 EdgeSet CutEdges{*Graph}; in hardenLoadsWithPlugin()
624 auto Nodes = std::make_unique<unsigned int[]>(Graph->nodes_size() + in hardenLoadsWithPlugin()
626 auto Edges = std::make_unique<unsigned int[]>(Graph->edges_size()); in hardenLoadsWithPlugin()
627 auto EdgeCuts = std::make_unique<int[]>(Graph->edges_size()); in hardenLoadsWithPlugin()
628 auto EdgeValues = std::make_unique<int[]>(Graph->edges_size()); in hardenLoadsWithPlugin()
629 for (const Node &N : Graph->nodes()) { in hardenLoadsWithPlugin()
630 Nodes[Graph->getNodeIndex(N)] = Graph->getEdgeIndex(*N.edges_begin()); in hardenLoadsWithPlugin()
632 Nodes[Graph->nodes_size()] = Graph->edges_size(); // terminator node in hardenLoadsWithPlugin()
633 for (const Edge &E : Graph->edges()) { in hardenLoadsWithPlugin()
634 Edges[Graph->getEdgeIndex(E)] = Graph->getNodeIndex(*E.getDest()); in hardenLoadsWithPlugin()
635 EdgeValues[Graph->getEdgeIndex(E)] = E.getValue(); in hardenLoadsWithPlugin()
637 OptimizeCut(Nodes.get(), Graph->nodes_size(), Edges.get(), EdgeValues.get(), in hardenLoadsWithPlugin()
638 EdgeCuts.get(), Graph->edges_size()); in hardenLoadsWithPlugin()
639 for (int I = 0; I < Graph->edges_size(); ++I) in hardenLoadsWithPlugin()
646 FencesInserted += insertFences(MF, *Graph, CutEdges); in hardenLoadsWithPlugin()
650 Graph = GraphBuilder::trim(*Graph, NodeSet{*Graph}, CutEdges); in hardenLoadsWithPlugin()
657 MachineFunction &MF, std::unique_ptr<MachineGadgetGraph> Graph) const { in hardenLoadsWithHeuristic()
660 if (Graph->NumFences > 0) { in hardenLoadsWithHeuristic()
662 Graph = trimMitigatedEdges(std::move(Graph)); in hardenLoadsWithHeuristic()
666 if (Graph->NumGadgets == 0) in hardenLoadsWithHeuristic()
670 EdgeSet CutEdges{*Graph}; in hardenLoadsWithHeuristic()
674 for (const Edge &E : Graph->edges()) in hardenLoadsWithHeuristic()
686 for (const Node &N : Graph->nodes()) { in hardenLoadsWithHeuristic()
715 int FencesInserted = insertFences(MF, *Graph, CutEdges); in hardenLoadsWithHeuristic()