diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-11-21 21:05:51 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-11-21 21:05:51 +0000 |
commit | fc0a1812f5179d3f16b0ff6d8432478e3daf6d23 (patch) | |
tree | d3db9f310ba332c442444bb7d8c9c2a5f34c5984 /llvm | |
parent | ba150ef60a9ebadcb20b9557fb86d4b61391db48 (diff) | |
download | bcm5719-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.cpp | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/Hexagon/rdf-ehlabel-live.mir | 17 |
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 +... + |