[PATCH] asan: do not instrument direct inbounds accesses to stack variables

Dmitry Vyukov dvyukov at google.com
Wed Mar 4 01:38:58 PST 2015


I've applied clang-format.

Renamed s/inbounds/safe/. Comment above the function explains the meaning of safe.

Regarding compilation speed. On top of removing instrumentation and reducing binary size, it also speedups compilation (less stuff for backed to deal with). I've tested on llvm's largest source file lib/Target/X86/X86ISelLowering.cpp.

current without asan -O0:
real	0m4.847s
real	0m4.813s
real	0m4.776s
(I cross-checked that the new compiler has the same performance)

current -fsanitize=address -O0
real	0m7.191s
real	0m7.257s
real	0m7.183s

new -fsanitize=address -O0
real	0m6.619s
real	0m6.798s
real	0m6.722s

current -fsanitize=address -O1
real	0m17.466s
real	0m17.553s
real	0m17.449s

new -fsanitize=address -O1
real	0m15.908s
real	0m15.853s
real	0m15.329s

current -fsanitize=address -O2
real	0m24.337s
real	0m24.246s
real	0m24.604s

new -fsanitize=address -O2
real	0m23.662s
real	0m23.430s
real	0m23.400s

Object file size:
w/o asan: 1228800
current with asan: 3658480 (+197.73%)
new with asan: 3444760 (-5.84%)

Amount of instrumentation (since it is just an object file, I grepped for "callq"):
w/o asan: 8235
current with asan: 37342
new with asan: 33706 (-12.5%)



More information about the llvm-commits mailing list