[llvm] [RISCV] Loosen the requirement of shadow stack codegen to Zimop (PR #152251)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 25 12:49:45 PDT 2025


================
@@ -124,7 +130,12 @@ static void emitSCSPrologue(MachineFunction &MF, MachineBasicBlock &MBB,
 
   const RISCVInstrInfo *TII = STI.getInstrInfo();
   if (HasHWShadowStack) {
-    BuildMI(MBB, MI, DL, TII->get(RISCV::SSPUSH)).addReg(RAReg);
+    if (STI.hasStdExtZcmop()) {
+      static_assert(RAReg == RISCV::X1);
+      BuildMI(MBB, MI, DL, TII->get(RISCV::PseudoMOP_C_SSPUSH));
+    }
+    else
+      BuildMI(MBB, MI, DL, TII->get(RISCV::PseudoMOP_SSPUSH)).addReg(RAReg);
----------------
topperc wrote:

```suggestion
    } else {
      BuildMI(MBB, MI, DL, TII->get(RISCV::PseudoMOP_SSPUSH)).addReg(RAReg);
    }
```

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


More information about the llvm-commits mailing list