// Test __sanitizer_coverage_pc_buffer().

// RUN: %clangxx_asan -fsanitize-coverage=edge %s -o %t && %run %t

// UNSUPPORTED: android

#include <assert.h>
#include <sanitizer/coverage_interface.h>
#include <stdio.h>

static volatile int sink;
__attribute__((noinline)) void bar() { sink = 2; }
__attribute__((noinline)) void foo() { sink = 1; }

void assertNotZeroPcs(uintptr_t *buf, uintptr_t size) {
  assert(buf);
  for (uintptr_t i = 0; i < size; ++i)
    assert(buf[i]);
}

int main() {
  uintptr_t *buf = NULL;
  uintptr_t sz = __sanitizer_get_coverage_pc_buffer(&buf);
  assertNotZeroPcs(buf, sz);
  assert(sz);

  foo();
  bar();
  uintptr_t *buf1 = NULL;
  uintptr_t sz1 = __sanitizer_get_coverage_pc_buffer(&buf1);
  assertNotZeroPcs(buf1, sz1);
  assert(buf1 == buf);
  assert(sz1 > sz);

  bar();
  uintptr_t *buf2 = NULL;
  uintptr_t sz2 = __sanitizer_get_coverage_pc_buffer(&buf2);
  assertNotZeroPcs(buf2, sz2);
  assert(buf2 == buf);
  assert(sz2 > sz1);

  __sanitizer_reset_coverage();
  uintptr_t *buf3 = NULL;
  uintptr_t sz3 = __sanitizer_get_coverage_pc_buffer(&buf3);
  assertNotZeroPcs(buf3, sz3);
  assert(buf3 == buf);
  assert(sz3 < sz2);
}
