From: Paul Eggert Date: Sat, 15 Jan 2022 02:50:48 +0000 (-0800) Subject: intprops: work around nvc 22.1 bug X-Git-Tag: v1.0~2397 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=f0b5cdf9a1fdb5c991cf3e1bdffb55e31126dffc;p=gnulib.git intprops: work around nvc 22.1 bug Problem reported by Olivier Cessenat (Bug#53256). * lib/intprops.h (_GL_HAS_BUILTIN_ADD_OVERFLOW) [__EDG__]: Define to 0, since __builtin_add_overflow doesn’t work on NVIDIA HPC SDK 22.1. --- diff --git a/ChangeLog b/ChangeLog index a900fec78d..cf22140d44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2022-01-14 Paul Eggert + intprops: work around nvc 22.1 bug + Problem reported by Olivier Cessenat (Bug#53256). + * lib/intprops.h (_GL_HAS_BUILTIN_ADD_OVERFLOW) [__EDG__]: + Define to 0, since __builtin_add_overflow doesn’t work + on NVIDIA HPC SDK 22.1. + copy-file-range: work around Linux kernel bug This workaround is adapted from Coreutils. * lib/copy-file-range.c [__linux__ && HAVE_COPY_FILE_RANGE]: diff --git a/lib/intprops.h b/lib/intprops.h index 68d6daa570..d4a917f72a 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -229,11 +229,15 @@ /* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow (A, B, P) work when P is non-null. */ -#if defined __has_builtin +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin # define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) /* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, see . */ -#elif 7 <= __GNUC__ && !defined __EDG__ +#elif 7 <= __GNUC__ # define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 #else # define _GL_HAS_BUILTIN_ADD_OVERFLOW 0