Use the CLANG_VERSION macro to control clang-specific features.
FossilOrigin-Name: f8ebeec211483503e135104ef977b3c384a1d789
This commit is contained in:
parent
eea46aeafc
commit
b94f2eccc1
16
manifest
16
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
|
||||
|
@ -1 +1 @@
|
||||
f69ce75b3d94331fdbfa2f3a27d61db24c285d2b
|
||||
f8ebeec211483503e135104ef977b3c384a1d789
|
@ -110,6 +110,14 @@
|
||||
# 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
|
||||
@ -233,7 +241,7 @@
|
||||
** 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
|
||||
|
||||
|
@ -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) );
|
||||
|
10
src/util.c
10
src/util.c
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user