diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-02 21:17:18 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-12-08 17:34:50 +0000 |
commit | 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e (patch) | |
tree | 62f873df87c7c675557a179e0c4c83fe9f3087bc /contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp | |
parent | cf037972ea8863e2bab7461d77345367d2c1e054 (diff) | |
parent | 7fa27ce4a07f19b07799a767fc29416f3b625afb (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp b/contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp index 894bdf38fe17..d90923d6d3ed 100644 --- a/contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp +++ b/contrib/llvm-project/llvm/lib/Target/Hexagon/RDFDeadCode.cpp @@ -55,7 +55,8 @@ private: // overly conservative (i.e. return "true" for all instructions), but it // is not safe to return "false" for an instruction that should not be // considered removable. -bool DeadCodeElimination::isLiveInstr(const MachineInstr *MI) const { +bool DeadCodeElimination::isLiveInstr(NodeAddr<StmtNode *> S) const { + const MachineInstr *MI = S.Addr->getCode(); if (MI->mayStore() || MI->isBranch() || MI->isCall() || MI->isReturn()) return true; if (MI->hasOrderedMemoryRef() || MI->hasUnmodeledSideEffects() || @@ -83,7 +84,7 @@ void DeadCodeElimination::scanInstr(NodeAddr<InstrNode*> IA, SetQueue<NodeId> &WorkQ) { if (!DFG.IsCode<NodeAttrs::Stmt>(IA)) return; - if (!isLiveInstr(NodeAddr<StmtNode*>(IA).Addr->getCode())) + if (!isLiveInstr(IA)) return; for (NodeAddr<RefNode*> RA : IA.Addr->members(DFG)) { if (!LiveNodes.count(RA.Id)) @@ -160,7 +161,7 @@ bool DeadCodeElimination::collect() { if (!LiveNodes.count(RA.Id)) DeadNodes.insert(RA.Id); if (DFG.IsCode<NodeAttrs::Stmt>(IA)) - if (isLiveInstr(NodeAddr<StmtNode*>(IA).Addr->getCode())) + if (isLiveInstr(IA) || DFG.hasUntrackedRef(IA)) continue; if (IsDead(IA)) { DeadInstrs.insert(IA.Id); |