1 // RUN: %clangxx_asan -O0 -mllvm -asan-instrument-dynamic-allocas %s -o %t
2 // RUN: %env_asan_opts=detect_stack_use_after_return=0 %run %t 2>&1
4 // REQUIRES: stable-runtime
6 // This testcase checks that allocas and VLAs inside loop are correctly unpoisoned.
11 #include "sanitizer/asan_interface.h"
13 // MSVC provides _alloca instead of alloca.
14 #if defined(_MSC_VER) && !defined(alloca)
15 # define alloca _alloca
18 #if defined(__sun__) && defined(__svr4__)
24 __attribute__((noinline
)) void foo(int len
) {
28 assert(!(reinterpret_cast<uintptr_t>(array
) & 31L));
30 for (int i
= 0; i
< 32; ++i
) {
33 assert(!(reinterpret_cast<uintptr_t>(bot
) & 31L));
37 int main(int argc
, char **argv
) {
39 void *q
= __asan_region_is_poisoned(bot
, (char *)top
- (char *)bot
);