[libFuzzer] even less aggressive step function for stack depth. Also don't use asan in one test to speed it up

llvm-svn: 320259
This commit is contained in:
Kostya Serebryany 2017-12-09 19:18:10 +00:00
parent 844f8f21fd
commit de891a1946
2 changed files with 13 additions and 2 deletions

View File

@ -274,8 +274,19 @@ void TracePC::CollectFeatures(Callback HandleFeature) const {
FirstFeature += ValueProfileMap.SizeInBits();
}
// Step function, grows similar to 8 * Log_2(A).
auto StackDepthStepFunction = [](uint32_t A) -> uint32_t {
uint32_t Log2 = 32 - __builtin_clz(A) - 1;
if (Log2 < 3) return A;
Log2 -= 3;
return (Log2 + 1) * 8 + ((A >> Log2) & 7);
};
assert(StackDepthStepFunction(1024) == 64);
assert(StackDepthStepFunction(1024 * 4) == 80);
assert(StackDepthStepFunction(1024 * 1024) == 144);
if (auto MaxStackOffset = GetMaxStackOffset())
HandleFeature(FirstFeature + MaxStackOffset / 128);
HandleFeature(FirstFeature + StackDepthStepFunction(MaxStackOffset / 8));
}
extern TracePC TPC;

View File

@ -1,3 +1,3 @@
CHECK: BINGO
RUN: %cpp_compiler %S/SimpleHashTest.cpp -o %t-SimpleHashTest
RUN: %cpp_compiler -fno-sanitize=address %S/SimpleHashTest.cpp -o %t-SimpleHashTest
RUN: not %t-SimpleHashTest -seed=1 -use_cmp=0 -use_value_profile=1 -runs=100000000 -max_len=64 2>&1 | FileCheck %s