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

Reply via email to