[llvm] [TII][X86] Do not schedule frame-setup/frame-destory instructions (PR #96611)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 25 20:53:05 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: Haohai Wen (HaohaiWen)

<details>
<summary>Changes</summary>

frame-setup/frame-destroy instruction can not be scheduled around by
PostRAScheduler. Their order is critical for SEH.

---
Full diff: https://github.com/llvm/llvm-project/pull/96611.diff


1 Files Affected:

- (modified) llvm/lib/Target/X86/X86InstrInfo.cpp (+5) 


``````````diff
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index 1a43d5c17080e..069a1ec9a5988 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -8832,6 +8832,11 @@ bool X86InstrInfo::isSchedulingBoundary(const MachineInstr &MI,
       Opcode == X86::PLDTILECFGV)
     return true;
 
+  // Frame setup and destory can't be scheduled around.
+  if (MI.getFlag(MachineInstr::FrameSetup) ||
+      MI.getFlag(MachineInstr::FrameDestroy))
+    return true;
+
   return TargetInstrInfo::isSchedulingBoundary(MI, MBB, MF);
 }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/96611


More information about the llvm-commits mailing list