FYI, here are the modifications we did to a 3.19.3 amalgamation to build
with the Intel 17 compiler. Note that we have a few modifs of our own, so
line numbers might be off. --DD

PS: I hope the formatting goes through. Was garbled when I converted to
plain text, so trying in rich-text, sorry.


sqlite3.c
<http://codereview.pdgm.com:8080/ui#file:review=79667/version=1435759>(17654):
​​error ​​#265: ​​floating-point ​​operation ​​result ​​is ​​out ​​of
​​range

sqlite3.c
<http://codereview.pdgm.com:8080/ui#file:review=79667/version=1435759>.o:
sqlite3.c
<http://codereview.pdgm.com:8080/ui#file:review=79667/version=1435759>:function
sqlite3VdbeExec.h: error: undefined reference to '__builtin_add_overflow'

#define SQLITE_VERSION "3.19.3" #define SQLITE_VERSION_NUMBER 3019003
#define SQLITE_SOURCE_ID "2017-06-08 14:26:16
0ee482a1e0eae22e08edc8978c9733a96603d4509645f348ebf55b579e89636b"

---
//epos/trunk/library/SharedComponents/src/lib/pdgm/sqlite/core/sqlite3.c
+++
//epos/trunk/library/SharedComponents/src/lib/pdgm/sqlite/core/sqlite3.c @@
-17644,21 +17644,21 @@ result = s / scale; result /= 1.0e+308; }else{
result = s * scale; result *= 1.0e+308; } }else{ assert( e>=342 ); if(
esign<0 ){ result = 0.0*s; }else{ - result = 1e308*1e308*s; /* Infinity */
+ result = 1e308*(1e308*s); /* Infinity */ } } }else{ /* 1.0e+22 is the
largest power of 10 than can be ** represented exactly. */ while( e%22 ) {
scale *= 1.0e+1; e -= 1; } while( e>0 ) { scale *= 1.0e+22; e -= 22; } if(
esign<0 ){ result = s / scale; }else{ @@ -18429,56 +18429,56 @@ } } /* **
Attempt to add, substract, or multiply the 64-bit signed value iB against
** the other 64-bit signed integer at *pA and store the result in *pA. **
Return 0 on success. Or if the operation would have resulted in an **
overflow, leave *pA unchanged and return 1. */ SQLITE_PRIVATE int
sqlite3AddInt64(i64 *pA, i64 iB){ -#if GCC_VERSION>=5004000 +#if
GCC_VERSION>=5004000 && !defined(__INTEL_COMPILER) return
__builtin_add_overflow(*pA, iB, pA); #else i64 iA = *pA; testcase( iA==0 );
testcase( iA==1 ); testcase( iB==-1 ); testcase( iB==0 ); if( iB>=0 ){
testcase( iA>0 && LARGEST_INT64 - iA == iB ); testcase( iA>0 &&
LARGEST_INT64 - iA == iB - 1 ); if( iA>0 && LARGEST_INT64 - iA < iB )
return 1; }else{ testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 1 );
testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 2 ); if( iA<0 && -(iA +
LARGEST_INT64) > iB + 1 ) return 1; } *pA += iB; return 0; #endif }
SQLITE_PRIVATE int sqlite3SubInt64(i64 *pA, i64 iB){ -#if
GCC_VERSION>=5004000 +#if GCC_VERSION>=5004000 &&
!defined(__INTEL_COMPILER) return __builtin_sub_overflow(*pA, iB, pA);
#else testcase( iB==SMALLEST_INT64+1 ); if( iB==SMALLEST_INT64 ){ testcase(
(*pA)==(-1) ); testcase( (*pA)==0 ); if( (*pA)>=0 ) return 1; *pA -= iB;
return 0; }else{ return sqlite3AddInt64(pA, -iB); } #endif } SQLITE_PRIVATE
int sqlite3MulInt64(i64 *pA, i64 iB){ -#if GCC_VERSION>=5004000 +#if
GCC_VERSION>=5004000 && !defined(__INTEL_COMPILER) return
__builtin_mul_overflow(*pA, iB, pA); #else i64 iA = *pA; if( iB>0 ){ if(
iA>LARGEST_INT64/iB ) return 1; if( iA<SMALLEST_INT64/iB ) return 1; }else
if( iB<0 ){ if( iA>0 ){ if( iB<SMALLEST_INT64/iA ) return 1; }else if( iA<0
){
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to