https://github.com/fmayer created https://github.com/llvm/llvm-project/pull/128218
we want the stack safety analysis to be able to skip array accesses that are already checked by array-bounds. >From 5d98080bb90e412b3e91c00dc54060d1e7163c89 Mon Sep 17 00:00:00 2001 From: Florian Mayer <fma...@google.com> Date: Fri, 21 Feb 2025 11:08:49 -0800 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?= =?UTF-8?q?l=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.4 --- ...-stack-safety-analysis-with-array-bounds.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 clang/test/CodeGen/hwasan-stack-safety-analysis-with-array-bounds.c diff --git a/clang/test/CodeGen/hwasan-stack-safety-analysis-with-array-bounds.c b/clang/test/CodeGen/hwasan-stack-safety-analysis-with-array-bounds.c new file mode 100644 index 0000000000000..cd12879fb410d --- /dev/null +++ b/clang/test/CodeGen/hwasan-stack-safety-analysis-with-array-bounds.c @@ -0,0 +1,26 @@ +// REQUIRES: aarch64-registered-target + +// RUN: %clang -fsanitize-trap=undefined -fsanitize=hwaddress,array-bounds -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-prefixes=CHECK,SAFETY +// RUN: %clang -fsanitize-trap=undefined -fsanitize=hwaddress,array-bounds -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-prefixes=CHECK,NOSAFETY + +// Make sure that HWAsan does not re-check what has been validated by array-bounds + +void f(char*); + +int foo(unsigned int idx) { + char buf[10]; + f(buf); + return buf[idx]; + // CHECK-LABEL: {{.*}}foo + // NOSAFETY: call void @llvm.hwasan.check.memaccess.shortgranules + // SAFETY-NOT: call void @llvm.hwasan.check.memaccess.shortgranules +} + +int bar(int idx) { + char buf[10]; + f(buf); + return buf[idx]; + // CHECK-LABEL: {{.*}}bar + // NOSAFETY: call void @llvm.hwasan.check.memaccess.shortgranules + // SAFETY-NOT: call void @llvm.hwasan.check.memaccess.shortgranules +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits