Lines Matching defs:Graph
164 std::unique_ptr<MachineGadgetGraph> Graph) const;
166 std::unique_ptr<MachineGadgetGraph> Graph) const;
171 trimMitigatedEdges(std::unique_ptr<MachineGadgetGraph> Graph) const;
274 std::unique_ptr<MachineGadgetGraph> Graph = getGadgetGraph(MF, MLI, MDT, MDF);
276 if (Graph == nullptr)
280 writeGadgetGraph(outs(), MF, Graph.get());
293 writeGadgetGraph(FileOut, MF, Graph.get());
313 FencesInserted = hardenLoadsWithPlugin(MF, std::move(Graph));
315 FencesInserted = hardenLoadsWithHeuristic(MF, std::move(Graph));
331 // Build the Register Dataflow Graph using the RDF framework
595 std::unique_ptr<MachineGadgetGraph> Graph) const {
596 NodeSet ElimNodes{*Graph};
597 EdgeSet ElimEdges{*Graph};
599 elimMitigatedEdgesAndNodes(*Graph, ElimEdges, ElimNodes);
601 Graph->NumFences = 0;
602 Graph->NumGadgets = RemainingGadgets;
604 Graph = GraphBuilder::trim(*Graph, ElimNodes, ElimEdges, 0 /* NumFences */,
607 return Graph;
611 MachineFunction &MF, std::unique_ptr<MachineGadgetGraph> Graph) const {
616 Graph = trimMitigatedEdges(std::move(Graph));
618 if (Graph->NumGadgets == 0)
622 EdgeSet CutEdges{*Graph};
623 auto Nodes = std::make_unique<unsigned int[]>(Graph->nodes_size() +
625 auto Edges = std::make_unique<unsigned int[]>(Graph->edges_size());
626 auto EdgeCuts = std::make_unique<int[]>(Graph->edges_size());
627 auto EdgeValues = std::make_unique<int[]>(Graph->edges_size());
628 for (const Node &N : Graph->nodes()) {
629 Nodes[Graph->getNodeIndex(N)] = Graph->getEdgeIndex(*N.edges_begin());
631 Nodes[Graph->nodes_size()] = Graph->edges_size(); // terminator node
632 for (const Edge &E : Graph->edges()) {
633 Edges[Graph->getEdgeIndex(E)] = Graph->getNodeIndex(*E.getDest());
634 EdgeValues[Graph->getEdgeIndex(E)] = E.getValue();
636 OptimizeCut(Nodes.get(), Graph->nodes_size(), Edges.get(), EdgeValues.get(),
637 EdgeCuts.get(), Graph->edges_size());
638 for (int I = 0; I < Graph->edges_size(); ++I)
645 FencesInserted += insertFences(MF, *Graph, CutEdges);
649 Graph = GraphBuilder::trim(*Graph, NodeSet{*Graph}, CutEdges);
656 MachineFunction &MF, std::unique_ptr<MachineGadgetGraph> Graph) const {
659 if (Graph->NumFences > 0) {
661 Graph = trimMitigatedEdges(std::move(Graph));
665 if (Graph->NumGadgets == 0)
669 EdgeSet CutEdges{*Graph};
673 for (const Edge &E : Graph->edges())
685 for (const Node &N : Graph->nodes()) {
714 int FencesInserted = insertFences(MF, *Graph, CutEdges);