Lines Matching defs:NodeAddr

334   template <typename T> struct NodeAddr {
335 NodeAddr() = default;
336 NodeAddr(T A, NodeId I) : Addr(A), Id(I) {}
340 template <typename S> NodeAddr(const NodeAddr<S> &NA)
343 bool operator== (const NodeAddr<T> &NA) const {
347 bool operator!= (const NodeAddr<T> &NA) const {
391 NodeAddr<NodeBase*> New();
464 void append(NodeAddr<NodeBase*> NA);
512 using NodeList = SmallVector<NodeAddr<NodeBase *>, 4>;
553 NodeAddr<RefNode*> getNextRef(RegisterRef RR, Predicate P, bool NextOnly,
555 NodeAddr<NodeBase*> getOwner(const DataFlowGraph &G);
572 void linkToDef(NodeId Self, NodeAddr<DefNode*> DA);
576 void linkToDef(NodeId Self, NodeAddr<DefNode*> DA);
598 NodeAddr<NodeBase*> getFirstMember(const DataFlowGraph &G) const;
599 NodeAddr<NodeBase*> getLastMember(const DataFlowGraph &G) const;
600 void addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G);
601 void addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
603 void removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G);
611 NodeAddr<NodeBase*> getOwner(const DataFlowGraph &G);
631 void addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G);
639 NodeAddr<BlockNode*> findBlock(const MachineBasicBlock *BB,
641 NodeAddr<BlockNode*> getEntryBlock(const DataFlowGraph &G);
656 template <typename T> NodeAddr<T> addr(NodeId N) const {
660 NodeAddr<FuncNode*> getFunc() const { return Func; }
675 using value_type = NodeAddr<DefNode *>;
711 void push(NodeAddr<DefNode*> DA) { Stack.push_back(DA); }
736 void pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DM);
754 NodeAddr<RefNode*> getNextRelated(NodeAddr<InstrNode*> IA,
755 NodeAddr<RefNode*> RA) const;
756 NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
757 NodeAddr<RefNode*> RA, bool Create);
758 NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
759 NodeAddr<RefNode*> RA) const;
760 NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
761 NodeAddr<RefNode*> RA, bool Create);
762 NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
763 NodeAddr<RefNode*> RA) const;
765 NodeList getRelatedRefs(NodeAddr<InstrNode*> IA,
766 NodeAddr<RefNode*> RA) const;
768 NodeAddr<BlockNode*> findBlock(MachineBasicBlock *BB) const {
772 void unlinkUse(NodeAddr<UseNode*> UA, bool RemoveFromOwner) {
778 void unlinkDef(NodeAddr<DefNode*> DA, bool RemoveFromOwner) {
786 static bool IsRef(const NodeAddr<NodeBase*> BA) {
792 static bool IsCode(const NodeAddr<NodeBase*> BA) {
797 static bool IsDef(const NodeAddr<NodeBase*> BA) {
802 static bool IsUse(const NodeAddr<NodeBase*> BA) {
807 static bool IsPhi(const NodeAddr<NodeBase*> BA) {
812 static bool IsPreservingDef(const NodeAddr<DefNode*> DA) {
822 NodeAddr<NodeBase*> newNode(uint16_t Attrs);
823 NodeAddr<NodeBase*> cloneNode(const NodeAddr<NodeBase*> B);
824 NodeAddr<UseNode*> newUse(NodeAddr<InstrNode*> Owner,
826 NodeAddr<PhiUseNode*> newPhiUse(NodeAddr<PhiNode*> Owner,
827 RegisterRef RR, NodeAddr<BlockNode*> PredB,
829 NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
831 NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
833 NodeAddr<PhiNode*> newPhi(NodeAddr<BlockNode*> Owner);
834 NodeAddr<StmtNode*> newStmt(NodeAddr<BlockNode*> Owner,
836 NodeAddr<BlockNode*> newBlock(NodeAddr<FuncNode*> Owner,
838 NodeAddr<FuncNode*> newFunc(MachineFunction *MF);
841 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
842 locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
847 void buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In);
848 void recordDefsForDF(BlockRefsMap &PhiM, NodeAddr<BlockNode*> BA);
850 NodeAddr<BlockNode*> BA);
853 void pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DM);
854 void pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DM);
855 template <typename T> void linkRefUp(NodeAddr<InstrNode*> IA,
856 NodeAddr<T> TA, DefStack &DS);
858 NodeAddr<StmtNode*> SA, Predicate P);
859 void linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA);
861 void unlinkUseDF(NodeAddr<UseNode*> UA);
862 void unlinkDefDF(NodeAddr<DefNode*> DA);
864 void removeFromOwner(NodeAddr<RefNode*> RA) {
865 NodeAddr<InstrNode*> IA = RA.Addr->getOwner(*this);
878 NodeAddr<FuncNode*> Func;
880 // Local map: MachineBasicBlock -> NodeAddr<BlockNode*>
881 std::map<MachineBasicBlock*,NodeAddr<BlockNode*>> BlockNodes;
887 NodeAddr<RefNode*> RefNode::getNextRef(RegisterRef RR, Predicate P,
895 NodeAddr<RefNode*> RA = NA;
904 NodeAddr<CodeNode*> CA = NA;
909 return NodeAddr<RefNode*>();
936 struct PrintNode : Print<NodeAddr<T>> {
937 PrintNode(const NodeAddr<T> &x, const DataFlowGraph &g)
938 : Print<NodeAddr<T>>(x, g) {}
943 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<DefNode *>> &P);
944 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<UseNode *>> &P);
946 const Print<NodeAddr<PhiUseNode *>> &P);
947 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<RefNode *>> &P);
950 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<PhiNode *>> &P);
952 const Print<NodeAddr<StmtNode *>> &P);
954 const Print<NodeAddr<InstrNode *>> &P);
956 const Print<NodeAddr<BlockNode *>> &P);
958 const Print<NodeAddr<FuncNode *>> &P);