Kai added a comment.

Did you consider to make this more generalized? From skimming through the 
change, I see only 2 ppc-specific things:

- Loading of the canary word
- Value of `XORWord`

The first bullet is solved by the the other inline comment I made.
The second bullet can be solved by using all 64 bits. If a 32 bit value is 
used, the upper bits are ignored because the `VT` should be `MVT::i32` in this 
case.



================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:11154-11156
+    GlobalValue *GV = (Subtarget.isAIXABI())
+                          ? M->getGlobalVariable(AIXSSPCanaryWordName)
+                          : M->getNamedValue("__stack_chk_guard");
----------------
I think this can be simplified using `getSDagStackGuard()`.


================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:11157
+                          : M->getNamedValue("__stack_chk_guard");
+    if (GV == nullptr) { // linux uses LOAD_STACK_GUARD node instead of having 
a
+                         // canary word global value
----------------
pscoro wrote:
> Addressing a comment from the previous review, GV != nullptr can not be an 
> assert because linux implements stack guard loading differently than aix. 
> This review now also supports linux as well
You can simplify the code by reordering the conditions:


```
if (useLoadStackGuardNode()) {
  // LOAD_STACK_GUARD
} else if (Value *GV = getSDagStackGuard(M)) {
  // AIX implementation
} else
  llvm_unreachable("Unhandled stack guard case");
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D129016

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to