see https://gitlab.xiph.org/xiph/kate/-/work_items/125 these functions mutate one of their arguments (*res) and therefore are not eligible for __attribute__((pure)) overflow test fails when compiling with -ftrivial-auto-var-init=zero --- a/src/kate_internal.h +++ b/src/kate_internal.h @@ -50,7 +50,6 @@ #define KATE_TYPE_MIN(type) ((type)-1 < 1?KATE_TYPE_MIN_SIGNED(type):(type)0) #define KATE_TYPE_MAX(type) ((type)~KATE_TYPE_MIN(type)) -static inline int kate_check_add_overflow(size_t x,size_t y,size_t *res) __attribute__((pure)); static inline int kate_check_add_overflow(size_t x,size_t y,size_t *res) { if (KATE_TYPE_MAX(size_t)-(y)>=x) { @@ -60,7 +59,6 @@ static inline int kate_check_add_overflow(size_t x,size_t y,size_t *res) return KATE_E_LIMIT; } -static inline int kate_check_mul_overflow_generic(size_t x,size_t y,size_t *res) __attribute__((pure)); static inline int kate_check_mul_overflow_generic(size_t x,size_t y,size_t *res) { kate_uint64_t r,mask; @@ -72,7 +70,6 @@ static inline int kate_check_mul_overflow_generic(size_t x,size_t y,size_t *res) return kate_check_add_overflow(r,(x&mask)*(y&mask),res); } -static inline int kate_check_mul_overflow(size_t x,size_t y,size_t *res) __attribute__((pure)); static inline int kate_check_mul_overflow(size_t x,size_t y,size_t *res) { if (sizeof(size_t)>4) {