1 // RUN: %clang     -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SAFETY
2 // RUN: %clang -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SAFETY
3 // RUN: %clang -O2 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SAFETY
4 // RUN: %clang -O3 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SAFETY
5 
6 // REQUIRES: aarch64-registered-target
7 
8 int z;
use(int * p)9 __attribute__((noinline)) void use(int *p) { *p = z; }
foo()10 int foo() {
11   int x;
12   use(&x);
13   return x;
14 }
15 
16 // CHECK-NO-SAFETY-NOT: allocas uses
17 
18 // CHECK-SAFETY-LABEL: @foo
19 // CHECK-SAFETY-LABEL: allocas uses:
20 // CHECK-SAFETY-NEXT: [4]: [0,4)
21