summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-11-21 21:05:51 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-11-21 21:05:51 +0000
commitfc0a1812f5179d3f16b0ff6d8432478e3daf6d23 (patch)
treed3db9f310ba332c442444bb7d8c9c2a5f34c5984 /llvm
parentba150ef60a9ebadcb20b9557fb86d4b61391db48 (diff)
downloadbcm5719-llvm-fc0a1812f5179d3f16b0ff6d8432478e3daf6d23.tar.gz
bcm5719-llvm-fc0a1812f5179d3f16b0ff6d8432478e3daf6d23.zip
[Hexagon] Make sure that RDF does not remove EH_LABELs
Since EH_LABELs (and other labels) no longer have "side-effects", they should be checked for separately. llvm-svn: 318801
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/Hexagon/RDFDeadCode.cpp3
-rw-r--r--llvm/test/CodeGen/Hexagon/rdf-ehlabel-live.mir17
2 files changed, 19 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/RDFDeadCode.cpp b/llvm/lib/Target/Hexagon/RDFDeadCode.cpp
index 60a12dcf2f0..240d7c355bc 100644
--- a/llvm/lib/Target/Hexagon/RDFDeadCode.cpp
+++ b/llvm/lib/Target/Hexagon/RDFDeadCode.cpp
@@ -58,7 +58,8 @@ private:
bool DeadCodeElimination::isLiveInstr(const MachineInstr *MI) const {
if (MI->mayStore() || MI->isBranch() || MI->isCall() || MI->isReturn())
return true;
- if (MI->hasOrderedMemoryRef() || MI->hasUnmodeledSideEffects())
+ if (MI->hasOrderedMemoryRef() || MI->hasUnmodeledSideEffects() ||
+ MI->isPosition())
return true;
if (MI->isPHI())
return false;
diff --git a/llvm/test/CodeGen/Hexagon/rdf-ehlabel-live.mir b/llvm/test/CodeGen/Hexagon/rdf-ehlabel-live.mir
new file mode 100644
index 00000000000..860240e0817
--- /dev/null
+++ b/llvm/test/CodeGen/Hexagon/rdf-ehlabel-live.mir
@@ -0,0 +1,17 @@
+# RUN: llc -march=hexagon -run-pass hexagon-rdf-opt -o - %s | FileCheck %s
+
+# Check that EH_LABELs are not removed as dead (since they are no longer
+# marked as having side-effects):
+# CHECK-LABEL: fred
+# CHECK: EH_LABEL
+
+---
+name: fred
+tracksRegLiveness: true
+
+body: |
+ bb.0:
+ %r0 = A2_tfrsi 0
+ EH_LABEL 0
+...
+
OpenPOWER on IntegriCloud