Como suprimir alguns erros de número inteiro não assinado do UBsan?
A maioria dos meus-fsanitize=unsigned-integer-overflow
erros são erros, mas às vezes eu o uso explicitamente como pretendido, o que resulta no UBSan produzindo falsos positivos.
Existe uma maneira de desativar a verificação do UBSan unsigned-integer-overflow para uma expressão específica?
EDIT em resposta ao comentário Shafik, aqui está um exemplo:
unsigned a = 0;
unsigned b = a - 1; // error: unsigned integer overflow
Na maioria das vezes isso é um bug, às vezes não. Com o UBSan, é possível encontrar toda vez que isso acontece, corrigir os erros, mas não encontrei uma maneira de silenciar os falsos positivos.
EDIT 2: para ativar a verificação, é necessário passar-fsanitize=integer
(para ativar todas as verificações inteiras) oufsanitize=unsigned-integer-overflow
. A partir dos comentários abaixo, parece que a verificação está disponível apenas no clang e ainda não no GCC.