[llvm-commits] [llvm-gcc-4.2] r93409 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Evan Cheng evan.cheng at apple.com
Wed Jan 13 18:24:07 PST 2010


Author: evancheng
Date: Wed Jan 13 20:24:07 2010
New Revision: 93409

URL: http://llvm.org/viewvc/llvm-project?rev=93409&view=rev
Log:
Add missing memory barrier after binary atomic builtin. r74403 apparently left this out by mistake. x86 target will optimize it away but it's looking for the barrier after the operation.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=93409&r1=93408&r2=93409&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed Jan 13 20:24:07 2010
@@ -4812,10 +4812,20 @@
 #else
   EmitMemoryBarrier(true, true, true, true, true);
 #endif
+
   Value *Result =
     Builder.CreateCall(Intrinsic::getDeclaration(TheModule,  id,
                                                  Ty, 2),
     C, C + 2);
+
+  // The gcc builtins are also full memory barriers.
+  // FIXME: __sync_lock_test_and_set and __sync_lock_release require less.
+#if defined(TARGET_ARM) && defined(CONFIG_DARWIN_H)
+  EmitMemoryBarrier(true, true, true, true, false);
+#else
+  EmitMemoryBarrier(true, true, true, true, true);
+#endif
+
   Result = Builder.CreateIntToPtr(Result, ResultTy);
   return Result;
 }





More information about the llvm-commits mailing list