Hi,

The orignal patch (r178816) fixed bug 12730 for x86. This patch adds the
same macro definitions "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8}" to ARM
target to address the same issue.

Please help to review it.

Thanks


>From fcfeabe6b0aa7484dc39842e87de431c574ffbdb Mon Sep 17 00:00:00 2001
From: Weiming Zhao <[email protected]>
Date: Wed, 28 Aug 2013 22:50:23 -0700
Subject: [PATCH] PR 12730: Add support for
 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8} on ARM

This fixes std::thread with libstdc++.

This patch is based on r178816. It addes macro definitions
of __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8} for ARM targets.
---
 lib/Basic/Targets.cpp                 |    5 +++++
 test/Preprocessor/predefined-macros.c |    7 +++++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 89b116d..666a6b9 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -3780,6 +3780,11 @@ public:
     // when Neon instructions are actually available.
     if ((FPU & NeonFPU) && !SoftFloat && IsARMv7)
       Builder.defineMacro("__ARM_NEON__");
+
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
   }
   virtual void getTargetBuiltins(const Builtin::Info *&Records,
                                  unsigned &NumRecords) const {
diff --git a/test/Preprocessor/predefined-macros.c b/test/Preprocessor/predefined-macros.c
index 94671f3..f7d9fbe 100644
--- a/test/Preprocessor/predefined-macros.c
+++ b/test/Preprocessor/predefined-macros.c
@@ -44,3 +44,10 @@
 // CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
 // CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
 // CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+//
+// RUN: %clang_cc1 %s -E -dM -o - -triple arm \
+// RUN:   | FileCheck %s --check-prefix=CHECK-SYNC_CAS_ARM
+// CHECK-SYNC_CAS_ARM: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
+// CHECK-SYNC_CAS_ARM: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
+// CHECK-SYNC_CAS_ARM: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+// CHECK-SYNC_CAS_ARM: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
-- 
1.7.8.3
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to