]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make use of the __buildin_OP_overflow() functions from GCC when doing
authordrh <drh@noemail.net>
Tue, 3 Jan 2017 17:33:43 +0000 (17:33 +0000)
committerdrh <drh@noemail.net>
Tue, 3 Jan 2017 17:33:43 +0000 (17:33 +0000)
64-bit signed integer arithmetic.

FossilOrigin-Name: 82cbebb8ee4484f13e5f48d305e20e73063f273e

manifest
manifest.uuid
src/util.c

index cff39d7dca9a4d339484cd041f843df976455258..7ec2dbb8d25413f81b674c1bce61c1aa89b61e21 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\sexperimental\saffinity()\sSQL\sfunction\swhen\sSQLITE_DEBUG\sis\sdefined.
-D 2017-01-03T14:45:35.313
+C Make\suse\sof\sthe\s__buildin_OP_overflow()\sfunctions\sfrom\sGCC\swhen\sdoing\n64-bit\ssigned\sinteger\sarithmetic.
+D 2017-01-03T17:33:43.523
 F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@@ -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 1534060bc034cdc51381c040c8bd6252dbcb64c9
+F src/util.c 8c3d2aa11bacd984caf8067ed5b857de3fb53b81
 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
 F src/vdbe.c 88bd6c32b333580d2661ac3afe33369757fb1522
 F src/vdbe.h 50ee139f9c68fff91be1d717ed3a6abbd496919c
@@ -1541,8 +1541,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 36944be6be5c42096f5da84187ff203af26b08ae f778f58ae4ea3e16f51b94591a2c1e563dcb0cde
-R 4de702ec2e06c17a2db8893398d4255a
-T +closed f778f58ae4ea3e16f51b94591a2c1e563dcb0cde
+P bed0eaa5f50112e64fc97a2afdc9d56cf8f5026a
+R 082101997f3f378fcfea5fe538ad3ab9
+T *branch * gnu-safe-math
+T *sym-gnu-safe-math *
+T -sym-trunk *
 U drh
-Z ab80b4c4af6ffab14c74e7e3612d1ec8
+Z 54548663084083c7fef96c176f102936
index 1ef467555f5d6110b10659a93cb8e11803c19810..f1ed017db3b9238d1a331ed009b57d98f847f8ac 100644 (file)
@@ -1 +1 @@
-bed0eaa5f50112e64fc97a2afdc9d56cf8f5026a
\ No newline at end of file
+82cbebb8ee4484f13e5f48d305e20e73063f273e
\ No newline at end of file
index b9684c6c01c499be267b6688355d5227b4948e0b..4a2266ee695ba3beaeb26cfe0d0fe594879be96c 100644 (file)
@@ -1279,6 +1279,10 @@ int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
 ** overflow, leave *pA unchanged and return 1.
 */
 int sqlite3AddInt64(i64 *pA, i64 iB){
+#if !defined(SQLITE_DISABLE_INTRINSIC) \
+    && defined(__GNUC__) && GCC_VERSION>=5004000
+  return __builtin_add_overflow(*pA, iB, pA);
+#else
   i64 iA = *pA;
   testcase( iA==0 ); testcase( iA==1 );
   testcase( iB==-1 ); testcase( iB==0 );
@@ -1293,8 +1297,13 @@ int sqlite3AddInt64(i64 *pA, i64 iB){
   }
   *pA += iB;
   return 0; 
+#endif
 }
 int sqlite3SubInt64(i64 *pA, i64 iB){
+#if !defined(SQLITE_DISABLE_INTRINSIC) \
+    && defined(__GNUC__) && GCC_VERSION>=5004000
+  return __builtin_sub_overflow(*pA, iB, pA);
+#else
   testcase( iB==SMALLEST_INT64+1 );
   if( iB==SMALLEST_INT64 ){
     testcase( (*pA)==(-1) ); testcase( (*pA)==0 );
@@ -1304,8 +1313,13 @@ int sqlite3SubInt64(i64 *pA, i64 iB){
   }else{
     return sqlite3AddInt64(pA, -iB);
   }
+#endif
 }
 int sqlite3MulInt64(i64 *pA, i64 iB){
+#if !defined(SQLITE_DISABLE_INTRINSIC) \
+    && defined(__GNUC__) && GCC_VERSION>=5004000
+  return __builtin_mul_overflow(*pA, iB, pA);
+#else
   i64 iA = *pA;
   if( iB>0 ){
     if( iA>LARGEST_INT64/iB ) return 1;
@@ -1321,6 +1335,7 @@ int sqlite3MulInt64(i64 *pA, i64 iB){
   }
   *pA = iA*iB;
   return 0;
+#endif
 }
 
 /*