[llvm-branch-commits] LiveRangeShrink: Early exit when encountering a code motion barrier. (PR #136806)
Peter Collingbourne via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Apr 23 16:08:02 PDT 2025
================
@@ -95,14 +95,24 @@ static MachineInstr *FindDominatedInstruction(MachineInstr &New,
return Old;
}
+static bool isCodeMotionBarrier(MachineInstr &MI) {
+ return MI.hasUnmodeledSideEffects() && !MI.isPseudoProbe();
+}
+
/// Builds Instruction to its dominating order number map \p M by traversing
/// from instruction \p Start.
static void BuildInstOrderMap(MachineBasicBlock::iterator Start,
InstOrderMap &M) {
M.clear();
unsigned i = 0;
- for (MachineInstr &I : make_range(Start, Start->getParent()->end()))
+ bool SawStore = false;
+ for (MachineInstr &I : make_range(Start, Start->getParent()->end())) {
+ if (I.mayStore())
+ SawStore = true;
+ if (!I.isSafeToMove(SawStore) && isCodeMotionBarrier(I))
----------------
pcc wrote:
Correct, updated this code to only call one.
While reading the code I observed that the code to update SawStore in this pass is redundant with what isSafeToMove is doing, so I removed it.
https://github.com/llvm/llvm-project/pull/136806
More information about the llvm-branch-commits
mailing list