diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-01-18 20:41:34 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-01-18 20:41:34 +0000 |
commit | 69e670d5f996e2d1c0e4300aec4b41cc2ec24dcb (patch) | |
tree | b26909b722268b09e9394196f1bf65cc56ca69af /llvm/lib/Target/Hexagon/RDFGraph.h | |
parent | eb85b04c7eccad93706d7e7e319a34597f521ac6 (diff) | |
download | bcm5719-llvm-69e670d5f996e2d1c0e4300aec4b41cc2ec24dcb.tar.gz bcm5719-llvm-69e670d5f996e2d1c0e4300aec4b41cc2ec24dcb.zip |
[RDF] Allow unlinking ref nodes from data-flow chains only
llvm-svn: 258073
Diffstat (limited to 'llvm/lib/Target/Hexagon/RDFGraph.h')
-rw-r--r-- | llvm/lib/Target/Hexagon/RDFGraph.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/RDFGraph.h b/llvm/lib/Target/Hexagon/RDFGraph.h index 7da7bb5973c..7a673847d8f 100644 --- a/llvm/lib/Target/Hexagon/RDFGraph.h +++ b/llvm/lib/Target/Hexagon/RDFGraph.h @@ -697,8 +697,16 @@ namespace rdf { NodeList getRelatedRefs(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA) const; - void unlinkUse(NodeAddr<UseNode*> UA); - void unlinkDef(NodeAddr<DefNode*> DA); + void unlinkUse(NodeAddr<UseNode*> UA, bool RemoveFromOwner) { + unlinkUseDF(UA); + if (RemoveFromOwner) + removeFromOwner(UA); + } + void unlinkDef(NodeAddr<DefNode*> DA, bool RemoveFromOwner) { + unlinkDefDF(DA); + if (RemoveFromOwner) + removeFromOwner(DA); + } // Some useful filters. template <uint16_t Kind> @@ -765,6 +773,13 @@ namespace rdf { void linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA); void linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA); + void unlinkUseDF(NodeAddr<UseNode*> UA); + void unlinkDefDF(NodeAddr<DefNode*> DA); + void removeFromOwner(NodeAddr<RefNode*> RA) { + NodeAddr<InstrNode*> IA = RA.Addr->getOwner(*this); + IA.Addr->removeMember(RA, *this); + } + TimerGroup TimeG; NodeAddr<FuncNode*> Func; NodeAllocator Memory; |