]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use the CLANG_VERSION macro to control clang-specific features.
authordrh <drh@noemail.net>
Tue, 3 Jan 2017 20:01:24 +0000 (20:01 +0000)
committerdrh <drh@noemail.net>
Tue, 3 Jan 2017 20:01:24 +0000 (20:01 +0000)
FossilOrigin-Name: f8ebeec211483503e135104ef977b3c384a1d789

manifest
manifest.uuid
src/sqliteInt.h
src/status.c
src/util.c

index 2d378a63aaafc4e56249317d1835f4e3099d880d..4393faecbac2ae141299fc8ba73ec53843fe53f8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Use\sthe\sGCC\sbuilt-in\s__sync_fetch_and_sub()\sto\smake\sthe\ssqlite3StatusDown()\nroutine\satomic,\sand\sthereby\savoid\ssome\smutexing.
-D 2017-01-03T18:05:04.175
+C Use\sthe\sCLANG_VERSION\smacro\sto\scontrol\sclang-specific\sfeatures.
+D 2017-01-03T20:01:24.105
 F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@@ -393,9 +393,9 @@ F src/shell.c 6095531aa900decdaa765e0f3993fba7153c92c1
 F src/sqlite.h.in e8e2d108d82647f0a812fdb74accf91c1ec08ddc
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
-F src/sqliteInt.h ae113e82230109e0964c3d93efed55700d8eec5e
+F src/sqliteInt.h 898cfcd9e0a40df15258cd86255bf9bee411e36d
 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
-F src/status.c 56174fdb52d1e8a0e9f3976e82d06a5cd0a1c2c3
+F src/status.c 1b1e64fbce135bc178a6481433422a32f433ba37
 F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
 F src/tclsqlite.c 205c66b9b81d97978a155caa3ef5be9c4de2b174
 F src/test1.c 8a98191a1da8e100f77cdb5cc716df67d405028d
@@ -453,7 +453,7 @@ F src/treeview.c 4e44ade3bfe59d82005039f72e09333ce2b4162c
 F src/trigger.c c9f0810043b265724fdb1bdd466894f984dfc182
 F src/update.c 1da7c462110bffed442a42884cb0d528c1db46d8
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
-F src/util.c 8c3d2aa11bacd984caf8067ed5b857de3fb53b81
+F src/util.c a88b0466fddf445ce752226d4698ca3faada620a
 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
 F src/vdbe.c 88bd6c32b333580d2661ac3afe33369757fb1522
 F src/vdbe.h 50ee139f9c68fff91be1d717ed3a6abbd496919c
@@ -1541,7 +1541,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 82cbebb8ee4484f13e5f48d305e20e73063f273e
-R 799d9858a7a6a1551985c372ac93d54d
+P f69ce75b3d94331fdbfa2f3a27d61db24c285d2b
+R 576384b00d5b84002b3bf9bfa5fd1c23
 U drh
-Z efd83d8962e4e3c856ce381388686c40
+Z df7fbae7b850ad1f1ec95f7decb0f63b
index 0aa7e0c273723f4c5c33d7f0bb1148943aab1e2e..70bf8dddad41f4eec518e48e5d49f8114d9f3677 100644 (file)
@@ -1 +1 @@
-f69ce75b3d94331fdbfa2f3a27d61db24c285d2b
\ No newline at end of file
+f8ebeec211483503e135104ef977b3c384a1d789
\ No newline at end of file
index c034d6841e2101dd580ada2eeb0982d43124f5b2..e57453e67911cb97f67ef0d6bebd85b28f54ab71 100644 (file)
 # define GCC_VERSION 0
 #endif
 
+/* What version of CLANG is being used.  0 means GCC is not being used */
+#ifdef __clang__
+# define CLANG_VERSION \
+            (__clang_major__*1000000+__clang_minor__*1000+__clang_patchlevel__)
+#else
+# define CLANG_VERSION 0
+#endif
+
 /* Needed for various definitions... */
 #if defined(__GNUC__) && !defined(_GNU_SOURCE)
 # define _GNU_SOURCE
 ** the sqlite3StatusDown() function is threadsafe.
 */
 #if !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=4004000
+    && (GCC_VERSION>=4004000 || CLANG_VERSION>=3000000)
 # define SQLITE_ATOMIC_STATUS_DOWN 1
 #endif
 
index 5e8fbc2ee2b39160575092328d7cbe5b67fc9ada..f36f36724d7d340f1848d8667c328be782bde967 100644 (file)
@@ -102,7 +102,7 @@ void sqlite3StatusDown(int op, int N){
   assert( N>=0 );
   assert( op>=0 && op<ArraySize(wsdStat.nowValue) );
 #if !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=4004000
+    && (GCC_VERSION>=4004000 || CLANG_VERSION>=3000000)
   (void)__sync_fetch_and_sub(&wsdStat.nowValue[op], N);
 #else
   assert( op>=0 && op<ArraySize(statMutex) );
index 4a2266ee695ba3beaeb26cfe0d0fe594879be96c..ca14ab8526ca100ed8bb11765a882822f634b835 100644 (file)
@@ -1141,7 +1141,7 @@ u32 sqlite3Get4byte(const u8 *p){
   memcpy(&x,p,4);
   return x;
 #elif SQLITE_BYTEORDER==1234 && !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=4003000
+    && (GCC_VERSION>=4003000 || CLANG_VERSION>=3000000)
   u32 x;
   memcpy(&x,p,4);
   return __builtin_bswap32(x);
@@ -1159,7 +1159,7 @@ void sqlite3Put4byte(unsigned char *p, u32 v){
 #if SQLITE_BYTEORDER==4321
   memcpy(p,&v,4);
 #elif SQLITE_BYTEORDER==1234 && !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=4003000
+    && (GCC_VERSION>=4003000 || CLANG_VERSION>=3000000)
   u32 x = __builtin_bswap32(v);
   memcpy(p,&x,4);
 #elif SQLITE_BYTEORDER==1234 && !defined(SQLITE_DISABLE_INTRINSIC) \
@@ -1280,7 +1280,7 @@ int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
 */
 int sqlite3AddInt64(i64 *pA, i64 iB){
 #if !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=5004000
+    && (GCC_VERSION>=5004000 || CLANG_VERSION>=4000000)
   return __builtin_add_overflow(*pA, iB, pA);
 #else
   i64 iA = *pA;
@@ -1301,7 +1301,7 @@ int sqlite3AddInt64(i64 *pA, i64 iB){
 }
 int sqlite3SubInt64(i64 *pA, i64 iB){
 #if !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=5004000
+    && (GCC_VERSION>=5004000 || CLANG_VERSION>=4000000)
   return __builtin_sub_overflow(*pA, iB, pA);
 #else
   testcase( iB==SMALLEST_INT64+1 );
@@ -1317,7 +1317,7 @@ int sqlite3SubInt64(i64 *pA, i64 iB){
 }
 int sqlite3MulInt64(i64 *pA, i64 iB){
 #if !defined(SQLITE_DISABLE_INTRINSIC) \
-    && defined(__GNUC__) && GCC_VERSION>=5004000
+    && (GCC_VERSION>=5004000 || CLANG_VERSION>=4000000)
   return __builtin_mul_overflow(*pA, iB, pA);
 #else
   i64 iA = *pA;