diff options
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 +... + |