[PATCH] D129016: [PowerPC] implemented @llvm.ppc.kill.canary to corrupt stack guard

ChenZheng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 9 18:52:39 PDT 2022


shchenz added inline comments.


================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:10744
+    Store = DAG.getStore(
+        Op->getOperand(0), DL,
+        DAG.getNode(ISD::XOR, DL, VT, Load, DAG.getAllOnesConstant(DL, VT)),
----------------
Nit: Maybe we need to set the chain input for store as the chain output of the load.

`Op->getOperand(0)` -> `Load->getValue(1)`

There is data dependency between the load and the store, so above change will not impact the correctness. But that makes more sense from memory access order part.


================
Comment at: llvm/test/CodeGen/PowerPC/kill-canary-intrinsic.ll:190
+; CHECK-FAST-NEXT:    addi r4, r1, 120
+; CHECK-FAST-NEXT:    stdx r3, r4, r5
+; CHECK-FAST-NEXT:    ld r3, -28688(r13)
----------------
We may need to check why we are not storing `not r3, r3` directly to `120(r1)` at -O0, like `std r3, 120(r1)`. Seems now we are storing to `119(r1)`


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129016/new/

https://reviews.llvm.org/D129016



More information about the llvm-commits mailing list