// Regression test for https://github.com/google/sanitizers/issues/691

// RUN: %clangxx_asan -O0 %s -o %t -fstack-protector
// RUN: %run %t 1 2>&1 | FileCheck %s
// RUN: %run %t 2 2>&1 | FileCheck %s

#include <stdio.h>
#include <string.h>

// MSVC provides _alloca instead of alloca.
#if defined(_MSC_VER) && !defined(alloca)
# define alloca _alloca
#elif defined(__FreeBSD__)
#include <stdlib.h>
#else
#include <alloca.h>
#endif


void f1_alloca() {
  char *dynamic_buffer = (char *)alloca(200);
  fprintf(stderr, "dynamic_buffer = %p\n", dynamic_buffer);
  memset(dynamic_buffer, 'y', 200);
  return;
}

static const int kDynamicArraySize = 200;

void f1_vla() {
  char dynamic_buffer[kDynamicArraySize];
  fprintf(stderr, "dynamic_buffer = %p\n", dynamic_buffer);
  memset(dynamic_buffer, 'y', kDynamicArraySize);
  return;
}

void f2() {
  char buf[1024];
  memset(buf, 'x', 1024);
}

int main(int argc, const char *argv[]) {
  if (!strcmp(argv[1], "1")) {
    f1_alloca();
  } else if (!strcmp(argv[1], "2")) {
    f1_vla();
  }
  f2();
  fprintf(stderr, "Done.\n");
  return 0;
}

// CHECK-NOT: ERROR: AddressSanitizer
// CHECK: Done.
