mirror of
https://github.com/nim-lang/Nim.git
synced 2026-08-26 00:21:42 +00:00
Limit use of long checked integer ops to arm-none-eabi (#26121)
#23835 tried to do this, but it also switched to `long int` on the GNU ABI, where it's actually just `int`. Fixes #26111 Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
@@ -17,6 +17,7 @@ __AVR__
|
||||
__arm__
|
||||
__riscv
|
||||
__EMSCRIPTEN__
|
||||
__unix__
|
||||
*/
|
||||
|
||||
|
||||
@@ -597,7 +598,7 @@ NIM_STATIC_ASSERT(sizeof(NI) == sizeof(void*) && NIM_INTBITS == sizeof(NI)*8, "P
|
||||
#define nimMulInt64(a, b, res) __builtin_smulll_overflow(a, b, (long long int*)res)
|
||||
|
||||
#if NIM_INTBITS == 32
|
||||
#if (defined(__arm__) || defined(__riscv)) && defined(__GNUC__)
|
||||
#if ((defined(__arm__) && !defined(__unix__)) || defined(__riscv)) && defined(__GNUC__)
|
||||
/* arm-none-eabi-gcc and riscv32-unknown-elf-gcc targets define int32_t as long int */
|
||||
#define nimAddInt(a, b, res) __builtin_saddl_overflow(a, b, res)
|
||||
#define nimSubInt(a, b, res) __builtin_ssubl_overflow(a, b, res)
|
||||
|
||||
Reference in New Issue
Block a user