[compiler-rt] [llvm] Msan zero alloc test (PR #155934)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 28 15:18:01 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Thurston Dang (thurstond)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/155934.diff
2 Files Affected:
- (added) compiler-rt/test/msan/zero_alloc.cpp (+37)
- (modified) llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp (+3)
``````````diff
diff --git a/compiler-rt/test/msan/zero_alloc.cpp b/compiler-rt/test/msan/zero_alloc.cpp
new file mode 100644
index 0000000000000..4b60c161efb36
--- /dev/null
+++ b/compiler-rt/test/msan/zero_alloc.cpp
@@ -0,0 +1,37 @@
+// RUN: %clang_msan -Wno-alloc-size -fsanitize-recover=memory %s -o %t && not %run %t 2>&1 | FileCheck %s
+
+// XFAIL: *
+
+#include <malloc.h>
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ {
+ char* p1 = (char*)calloc(1, 0);
+ printf ("p1 is %p\n", p1);
+ printf ("Content of p1 is: %d\n", *p1);
+ // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value
+ // CHECK: {{#0 0x.* in main .*zero_alloc.cpp:}}[[@LINE-2]]
+ free(p1);
+ }
+
+ {
+ char* p2 = (char*)calloc(0, 1);
+ printf ("p2 is %p\n", p2);
+ printf ("Content of p2 is: %d\n", *p2);
+ // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value
+ // CHECK: {{#0 0x.* in main .*zero_alloc.cpp:}}[[@LINE-2]]
+ free(p2);
+ }
+
+ {
+ char* p3 = (char*)malloc(0);
+ printf ("p3 is %p\n", p3);
+ printf ("Content of p2 is: %d\n", *p3);
+ // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value
+ // CHECK: {{#0 0x.* in main .*zero_alloc.cpp:}}[[@LINE-2]]
+ free(p3);
+ }
+
+ return 0;
+}
diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
index fc34d14259d1f..66cdbfcf998c6 100644
--- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
@@ -1574,6 +1574,9 @@ void HWAddressSanitizer::sanitizeFunction(Function &F,
if (F.empty())
return;
+ if (F.isPresplitCoroutine())
+ return;
+
NumTotalFuncs++;
OptimizationRemarkEmitter &ORE =
``````````
</details>
https://github.com/llvm/llvm-project/pull/155934
More information about the llvm-commits
mailing list