summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-04-28 20:17:06 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-04-28 20:17:06 +0000
commit55874cf02b40eaaf6b14ed1baec2fac9fe89390e (patch)
tree499aaef5bfd550cefd80e589f4c09d7140eeab87 /llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
parent6cd5364556bad206ef922f1fe7ed84101ef44159 (diff)
downloadbcm5719-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/HexagonRDFOpt.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp b/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
index d735acf457b..642a8785def 100644
--- a/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
@@ -289,7 +289,10 @@ bool HexagonRDFOpt::runOnMachineFunction(MachineFunction &MF) {
HexagonRegisterAliasInfo HAI(HRI);
TargetOperandInfo TOI(HII);
DataFlowGraph G(MF, HII, HRI, *MDT, MDF, HAI, TOI);
- G.build();
+ // Dead phi nodes are necessary for copy propagation: we can add a use
+ // of a register in a block where it would need a phi node, but which
+ // was dead (and removed) during the graph build time.
+ G.build(BuildOptions::KeepDeadPhis);
if (RDFDump)
dbgs() << "Starting copy propagation on: " << MF.getName() << '\n'
OpenPOWER on IntegriCloud