46 lines · cpp
1// RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -g %s -o %t2// RUN: %run %t 2>&1 | \3// RUN: FileCheck --check-prefixes=CHECK,CHECK-NOSTATS %s4// RUN: env MSAN_OPTIONS=print_stats=1 %run %t 2>&1 | \5// RUN: FileCheck --check-prefixes=CHECK,CHECK-NOSTATS %s6// RUN: env MSAN_OPTIONS=print_stats=1,atexit=1 %run %t 2>&1 | \7// RUN: FileCheck --check-prefixes=CHECK,CHECK-STATS %s8 9// RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -g -DPOSITIVE=1 %s -o %t10// RUN: not %run %t 2>&1 | \11// RUN: FileCheck --check-prefixes=CHECK,CHECK-NOSTATS %s12// RUN: env MSAN_OPTIONS=print_stats=1 not %run %t 2>&1 | \13// RUN: FileCheck --check-prefixes=CHECK,CHECK-STATS %s14 15// RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -fsanitize-recover=memory -g -DPOSITIVE=1 %s -o %t16// RUN: not %run %t 2>&1 | \17// RUN: FileCheck --check-prefixes=CHECK,CHECK-NOSTATS,CHECK-RECOVER %s18// RUN: env MSAN_OPTIONS=print_stats=1 not %run %t 2>&1 | \19// RUN: FileCheck --check-prefixes=CHECK,CHECK-STATS,CHECK-RECOVER %s20 21#include <stdio.h>22int main(int argc, char **argv) {23 int x;24 int *volatile p = &x;25 fprintf(stderr, "TEST\n");26#ifdef POSITIVE27 return *p;28#else29 return 0;30#endif31}32 33// CHECK: TEST34 35// CHECK-STATS: Unique heap origins:36// CHECK-STATS: Stack depot allocated bytes:37// CHECK-STATS: Unique origin histories:38// CHECK-STATS: History depot allocated bytes:39 40// CHECK-NOSTATS-NOT: Unique heap origins:41// CHECK-NOSTATS-NOT: Stack depot allocated bytes:42// CHECK-NOSTATS-NOT: Unique origin histories:43// CHECK-NOSTATS-NOT: History depot allocated bytes:44 45// CHECK-RECOVER: MemorySanitizer: 1 warnings reported.46