From: Krzysztof Parzyszek Date: Tue, 21 Nov 2017 21:05:51 +0000 (+0000) Subject: [Hexagon] Make sure that RDF does not remove EH_LABELs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3a6d30355b8642313f1088c69aa48d67f13b9dc;p=llvm [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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318801 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Hexagon/RDFDeadCode.cpp b/lib/Target/Hexagon/RDFDeadCode.cpp index 60a12dcf2f0..240d7c355bc 100644 --- a/lib/Target/Hexagon/RDFDeadCode.cpp +++ b/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/test/CodeGen/Hexagon/rdf-ehlabel-live.mir b/test/CodeGen/Hexagon/rdf-ehlabel-live.mir new file mode 100644 index 00000000000..860240e0817 --- /dev/null +++ b/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 +... +