Как подавить некоторые ошибки без знака-целочисленного переполнения из UBsan?
Большинство из моих-fsanitize=unsigned-integer-overflow
ошибки - это ошибки, но иногда я явно использую их по назначению, в результате чего UBSan дает ложные срабатывания.
Есть ли способ отключить проверку UBSan без знака-целочисленного переполнения для конкретного выражения?
РЕДАКТИРОВАТЬ в ответ на комментарий Shafik, вот пример:
unsigned a = 0;
unsigned b = a - 1; // error: unsigned integer overflow
В большинстве случаев это ошибка, иногда нет. С UBSan каждый раз можно найти, исправить ошибки, но я не нашел способа заглушить ложные срабатывания.
РЕДАКТИРОВАТЬ 2: чтобы включить проверку необходимо пройти либо-fsanitize=integer
(чтобы включить все целочисленные проверки) илиfsanitize=unsigned-integer-overflow
, Из комментариев ниже кажется, что проверка доступна только в Clang, а не в GCC.