llvm/compiler-rt/test/rtsan/sanity_check_pure_c.c

// RUN: %clang -fsanitize=realtime %s -o %t
// RUN: not %run %t 2>&1 | FileCheck %s
// RUN: %clang %s -o %t
// RUN: %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE
#ifdef __cplusplus
#  error "This test must be built in C mode"
#endif

#include <stdio.h>
#include <stdlib.h>

// Check that we can build and run C code.

void nonblocking_function(void) __attribute__((nonblocking));

void nonblocking_function(void) __attribute__((nonblocking)) {
  void *ptr = malloc(2);
  printf("ptr: %p\n", ptr); // ensure we don't optimize out the malloc
}

int main() {
  nonblocking_function();
  printf("Done\n");
  return 0;
}

// CHECK: ==ERROR: RealtimeSanitizer
// CHECK-NO-SANITIZE: Done