https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109939
--- Comment #2 from Benjamin Robin <dev at benjarobin dot fr> --- New test case with exactly same problem since __ssat() calls __builtin_arm_ssat(): ``` #include <arm_acle.h> int dbg_ssat_out; int dbg_ssat_in; void test_arm_ssat(void) { dbg_ssat_out = __ssat(dbg_ssat_in, 16); } ``` Build command: ``` arm-none-eabi-gcc -mcpu=cortex-m4 -Wall -Wconversion -c t2.c -o t2.o t2.c: In function 'test_arm_ssat': t2.c:8:20: warning: conversion to 'int32_t' {aka 'long int'} from 'unsigned int' may change the sign of the result [-Wsign-conversion] 8 | dbg_ssat_out = __ssat(dbg_ssat_in, 16); | ^~~~~~ ```