Skip to content

UndefinedBehaviorSanitizer Clang 7

Viktor Ostashevskyi edited this page Apr 6, 2020 · 2 revisions

UndefinedBehaviorSanitizer checks

It is actually set of smaller sanitizers, which can be used independently or in groups (undefined, nullability, shift, integer, bounds).

Recover and Trap columns shows whether sanitizer can be used with -fsanitize-recover and -fsanitize-trap.

Sanitizer undefined nullability shift implicit-conversion integer bounds Recover Trap
alignment X - - - - - Default Yes
array-bounds X - - - - X Default Yes
bool X - - - - - Default Yes
builtin X - - - - - Default Yes
enum X - - - - - Default Yes
float-cast-overflow X - - - - - Default Yes
float-divide-by-zero X - - - - - Default Yes
function X - - - - - Default Yes
integer-divide-by-zero X - - - X - Default Yes
nonnull-attribute X - - - - - Default Yes
null X - - - - - Default Yes
nullability-arg - X - - - - Default Yes
nullability-assign - X - - - - Default Yes
nullability-return - X - - - - Default Yes
object-size X - - - - - Default Yes
pointer-overflow X - - - - - Default Yes
return X - - - - - NO Yes
returns-nonnull-attribute X - - - - - Default Yes
shift-base X - X - X - Default Yes
shift-exponent X - X - X - Default Yes
signed-integer-overflow X - - - X - Default Yes
unreachable X - - - - - NO Yes
vla-bound X - - - - - Default Yes
vptr X - - - - - Default NO
unsigned-integer-overflow - - - - X - Default Yes
implicit-integer-truncation - - - X X - Default Yes
local-bounds - - - - - X Yes Yes

LLVM options

local-bounds

Type Name Default value Description
bool bounds-checking-single-trap false (?) Use one trap block per function