diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-28 20:17:06 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-28 20:17:06 +0000 |
commit | 55874cf02b40eaaf6b14ed1baec2fac9fe89390e (patch) | |
tree | 499aaef5bfd550cefd80e589f4c09d7140eeab87 /llvm/lib/Target/Hexagon/RDFGraph.cpp | |
parent | 6cd5364556bad206ef922f1fe7ed84101ef44159 (diff) | |
download | bcm5719-llvm-55874cf02b40eaaf6b14ed1baec2fac9fe89390e.tar.gz bcm5719-llvm-55874cf02b40eaaf6b14ed1baec2fac9fe89390e.zip |
[RDF] Add option to keep dead phi nodes in DFG
Dead phi nodes are needed for code motion (such as copy propagation),
where a new use would be placed in a location that would be dominated
by a dead phi. Such a transformation is not legal for copy propagation,
and the existence of the phi would prevent it, but if the phi is not
there, it may appear to be valid.
llvm-svn: 267932
Diffstat (limited to 'llvm/lib/Target/Hexagon/RDFGraph.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/RDFGraph.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/RDFGraph.cpp b/llvm/lib/Target/Hexagon/RDFGraph.cpp index 335e5cb080d..53743e681c1 100644 --- a/llvm/lib/Target/Hexagon/RDFGraph.cpp +++ b/llvm/lib/Target/Hexagon/RDFGraph.cpp @@ -919,7 +919,7 @@ NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) { } // Build the data flow graph. -void DataFlowGraph::build() { +void DataFlowGraph::build(unsigned Options) { reset(); Func = newFunc(&MF); @@ -964,7 +964,8 @@ void DataFlowGraph::build() { linkBlockRefs(DM, EA); // Finally, remove all unused phi nodes. - removeUnusedPhis(); + if (!(Options & BuildOptions::KeepDeadPhis)) + removeUnusedPhis(); } // For each stack in the map DefM, push the delimiter for block B on it. |