xref: /llvm-project/clang/test/CodeGen/hwasan-stack-safety-analysis.c (revision 918c5a926090214bc6843854afb4750673b4c3ae)
1 // REQUIRES: aarch64-registered-target
2 
3 // RUN: %clang -fsanitize=hwaddress -target aarch64-linux-gnu -S -emit-llvm -mllvm -hwasan-use-stack-safety=true -mllvm -hwasan-generate-tags-with-calls -O2 %s -o - | FileCheck %s --check-prefix=SAFETY
4 // RUN: %clang -fsanitize=hwaddress -target aarch64-linux-gnu -S -emit-llvm -mllvm -hwasan-use-stack-safety=false -mllvm -hwasan-generate-tags-with-calls -O2 %s -o - | FileCheck %s --check-prefix=NOSAFETY
5 
6 // Default when optimizing, but not with O0.
7 // RUN: %clang -fsanitize=hwaddress -target aarch64-linux-gnu -S -emit-llvm -mllvm -hwasan-generate-tags-with-calls -O2 %s -o - | FileCheck %s --check-prefix=SAFETY
8 // RUN: %clang -fsanitize=hwaddress -target aarch64-linux-gnu -S -emit-llvm -mllvm -hwasan-generate-tags-with-calls -O0 %s -o - | FileCheck %s --check-prefix=NOSAFETY
9 
main(int argc,char ** argv)10 int main(int argc, char **argv) {
11   char buf[10];
12   volatile char *x = buf;
13   *x = 0;
14   return buf[0];
15   // NOSAFETY: call i8 @__hwasan_generate_tag
16   // SAFETY-NOT: call i8 @__hwasan_generate_tag
17 }
18