When using libcall expansions for the atomic intrinsics, the explicit
authorJim Grosbach <grosbach@apple.com>
Wed, 23 Jun 2010 16:08:49 +0000 (16:08 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 23 Jun 2010 16:08:49 +0000 (16:08 +0000)
MEMBARRIER fences aren't necessary for ARM. Tell the combiner to fold them
away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106631 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp

index 7f89b2d1685697782a411b0186b9266316831983..97a5f9da120e16b2ef40974b0e9387e13a5c472e 100644 (file)
@@ -441,6 +441,8 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
     setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i8,  Expand);
     setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i16, Expand);
     setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i32, Expand);
+    // Since the libcalls include locking, fold in the fences
+    setShouldFoldAtomicFences(true);
   }
   // 64-bit versions are always libcalls (for now)
   setOperationAction(ISD::ATOMIC_CMP_SWAP,  MVT::i64, Expand);