From 897775d6ee89e54e447e35fd09436a65a620307d Mon Sep 17 00:00:00 2001
From: dim <dim@FreeBSD.org>
Date: Sun, 6 Nov 2011 14:07:23 +0000
Subject: When one attempts to compile the tree with -march=i386, which also
 used to be gcc's default before r198344, calls to atomic builtins will not be
 expanded inline.  Instead, they will be generated as calls to external
 functions (e.g. __sync_fetch_and_add_N), leading to linking errors later on.

Put in a seatbelt that disables use of atomic builtins in libstdc++ and
llvm, when tuning specifically for the real i386 CPU.  This does not
protect against all possible issues, but it is better than nothing.
---
 lib/clang/include/llvm/Config/config.h      | 2 ++
 lib/clang/include/llvm/Config/llvm-config.h | 2 ++
 2 files changed, 4 insertions(+)

(limited to 'lib/clang/include')

diff --git a/lib/clang/include/llvm/Config/config.h b/lib/clang/include/llvm/Config/config.h
index 5b6761c..5ecb51c 100644
--- a/lib/clang/include/llvm/Config/config.h
+++ b/lib/clang/include/llvm/Config/config.h
@@ -552,7 +552,9 @@
 /* #undef LLVM_ETCDIR */
 
 /* Has gcc/MSVC atomic intrinsics */
+#ifndef __tune_i386__
 #define LLVM_HAS_ATOMICS 1
+#endif
 
 /* Host triple we were built on */
 /* #undef LLVM_HOSTTRIPLE */
diff --git a/lib/clang/include/llvm/Config/llvm-config.h b/lib/clang/include/llvm/Config/llvm-config.h
index 05e17ca..28837f7 100644
--- a/lib/clang/include/llvm/Config/llvm-config.h
+++ b/lib/clang/include/llvm/Config/llvm-config.h
@@ -34,7 +34,9 @@
 /* #undef LLVM_ETCDIR */
 
 /* Has gcc/MSVC atomic intrinsics */
+#ifndef __tune_i386__
 #define LLVM_HAS_ATOMICS 1
+#endif
 
 /* Host triple we were built on */
 /* #undef LLVM_HOSTTRIPLE */
-- 
cgit v1.1