From f0b5cdf9a1fdb5c991cf3e1bdffb55e31126dffc Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 14 Jan 2022 18:50:48 -0800 Subject: [PATCH] intprops: work around nvc 22.1 bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- ChangeLog | 6 ++++++ lib/intprops.h | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) 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 -- 2.32.0