From 1016fa789f76dd88161dc63f123a4bb7d04d7b0c Mon Sep 17 00:00:00 2001 From: Sagar Maheshwari Date: Fri, 19 Dec 2025 15:22:59 +0530 Subject: [PATCH] [AIE] Fix dereferencing an unengaged std::optional. --- llvm/lib/Target/AIE/AIEBaseSubtarget.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/llvm/lib/Target/AIE/AIEBaseSubtarget.cpp b/llvm/lib/Target/AIE/AIEBaseSubtarget.cpp index 743cfb484131..76c349b29b63 100644 --- a/llvm/lib/Target/AIE/AIEBaseSubtarget.cpp +++ b/llvm/lib/Target/AIE/AIEBaseSubtarget.cpp @@ -459,16 +459,16 @@ class EmitFixedSUnits : public ScheduleDAGMutation { SDep Dep(&FreeSU, SDep::Artificial); auto Latency = AIE::maxLatency(&MI, *TII, *ItinData, /*IncludeStages=*/true); - if (TII->isLock(MI.getOpcode())) { - Dep.setLatency(std::max( - TII->getCoreResumeCycleAfterLock() - - *TII->getFirstMemoryCycle(FixedDepMI->getDesc().SchedClass) + 1, - Latency)); - } else if (TII->isLock(FixedDepMI->getOpcode())) { + auto OptFirstMemCycle = + TII->getFirstMemoryCycle(FixedDepMI->getDesc().SchedClass); + auto OptLastMemCycle = TII->getLastMemoryCycle(MI.getDesc().SchedClass); + if (TII->isLock(MI.getOpcode()) && OptFirstMemCycle) { Dep.setLatency( - std::max(*TII->getLastMemoryCycle(MI.getDesc().SchedClass) - - TII->getCoreStallCycleAfterLock() + 1, + std::max(TII->getCoreResumeCycleAfterLock() - *OptFirstMemCycle + 1, Latency)); + } else if (TII->isLock(FixedDepMI->getOpcode()) && OptLastMemCycle) { + Dep.setLatency(std::max( + *OptLastMemCycle - TII->getCoreStallCycleAfterLock() + 1, Latency)); } else { Dep.setLatency(Latency); }