xref: /llvm-project/clang/test/Driver/memtag-stack.c (revision 9ca2d60213790642d21dfbea4a1bbe4d23e56063)
1 // RUN: %clang     --target=aarch64 -march=armv8+memtag -fsanitize=memtag-stack -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SAFETY
2 // RUN: %clang -O1 --target=aarch64 -march=armv8+memtag -fsanitize=memtag-stack -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SAFETY
3 // RUN: %clang -O2 --target=aarch64 -march=armv8+memtag -fsanitize=memtag-stack -mllvm -stack-safety-print=1 %s -S -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SAFETY
4 // RUN: %clang -O3 --target=aarch64 -march=armv8+memtag -fsanitize=memtag-stack -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