[PATCH] D70072: [ARM] Improve codegen of volatile load/store of i64

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 11 13:07:36 PST 2019


efriedma added a comment.

The architecture specification provides limited guarantees here, but I guess this doesn't do any harm.



================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:8969
+      !Subtarget->isThumb1Only() &&
+      LD->getExtensionType() == ISD::NON_EXTLOAD && LD->isVolatile()) {
+    SDLoc dl(N);
----------------
I'd prefer not to exclude extending loads here.  Could lead to weird cases where we miss the transform.


================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:8983
+    MachineSDNode *Result =
+        DAG.getMachineNode(OpCode, dl, {MVT::i32, MVT::i32, MVT::Other}, Ops);
+    MachineMemOperand *MemOp = cast<MemSDNode>(N)->getMemOperand();
----------------
Please don't make MachineSDNodes this early; it might appear to mostly work, but other code is not expecting MachineSDNodes at this point.  See ARMISelLowering.h for how to introduce a target-specific SDNode.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D70072





More information about the llvm-commits mailing list