¿Cómo suprimir algunos errores de desbordamiento de enteros sin signo de UBsan?
La mayoría de mi-fsanitize=unsigned-integer-overflow
los errores son errores, pero a veces lo uso explícitamente como estaba previsto, lo que hace que UBSan produzca falsos positivos.
¿Hay alguna manera de desactivar la comprobación UBSan unsigned-integer-overflow para una expresión particular?
EDITAR en respuesta al comentario de Shafik, aquí hay un ejemplo:
unsigned a = 0;
unsigned b = a - 1; // error: unsigned integer overflow
La mayoría de las veces es un error, a veces no lo es. Con UBSan uno puede encontrar cada vez que sucede, corregir los errores, pero no he encontrado una manera de silenciar los falsos positivos.
EDITAR 2: para habilitar la comprobación, uno debe pasar-fsanitize=integer
(para habilitar todas las comprobaciones de enteros) ofsanitize=unsigned-integer-overflow
. De los comentarios a continuación, parece que la verificación solo está disponible en clang y aún no en GCC.