[PATCH] Add AtomicExpandPass::bracketInstWithFences, and use it whenever getInsertFencesForAtomic would trigger in SelectionDAGBuilder

JF Bastien jfb at chromium.org
Mon Sep 22 09:03:02 PDT 2014


================
Comment at: include/llvm/Target/TargetLowering.h:963
@@ -962,2 +962,3 @@
   /// RMW and CmpXchg set both IsStore and IsLoad to true.
   /// Backends with !getInsertFencesForAtomic() should keep a no-op here.
+  virtual Instruction* emitLeadingFence(IRBuilder<> &Builder, AtomicOrdering Ord,
----------------
What should the return value be? Are there cases where a backend emits more than one instruction?

================
Comment at: lib/CodeGen/AtomicExpandPass.cpp:167
@@ -117,3 +166,3 @@
   // The only 64-bit load guaranteed to be single-copy atomic by ARM is
   // an ldrexd (A3.5.3).
   Value *Val =
----------------
Should this still be here, since the code wants to handle more than just ARM?

http://reviews.llvm.org/D5179






More information about the llvm-commits mailing list