[compiler-rt] 341ca1a - [test][msan] s390x already passes the test

via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 17 14:26:45 PST 2023


Author: Vitaly Buka
Date: 2023-11-17T14:26:41-08:00
New Revision: 341ca1ad0c32fc757680e9d5d302789b6458a7de

URL: https://github.com/llvm/llvm-project/commit/341ca1ad0c32fc757680e9d5d302789b6458a7de
DIFF: https://github.com/llvm/llvm-project/commit/341ca1ad0c32fc757680e9d5d302789b6458a7de.diff

LOG: [test][msan] s390x already passes the test

3bc439bdff8bb5518098bd9ef52c56ac071276bc implemented overflow copying in a different way.

It's lucky to pass this test, but may fails in a different way.

Reviewers: thurstond, iii-i

Reviewed By: thurstond

Pull Request: https://github.com/llvm/llvm-project/pull/72710

Added: 
    

Modified: 
    compiler-rt/test/msan/vararg_shadow.cpp
    llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/test/msan/vararg_shadow.cpp b/compiler-rt/test/msan/vararg_shadow.cpp
index 0c1e5e8d6369c3a..78f1591b3d62bce 100644
--- a/compiler-rt/test/msan/vararg_shadow.cpp
+++ b/compiler-rt/test/msan/vararg_shadow.cpp
@@ -3,8 +3,8 @@
 // Without -fno-sanitize-memory-param-retval we can't even pass poisoned values.
 // RUN: %clangxx_msan -fno-sanitize-memory-param-retval -fsanitize-memory-track-origins=0 -O3 %s -o %t
 
-// Nothing works yet.
-// XFAIL: *
+// The most of targets fail the test.
+// XFAIL: target={{(x86|aarch64|loongarch64|mips|powerpc64).*}}
 
 #include <sanitizer/msan_interface.h>
 #include <stdarg.h>

diff  --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index 0cdb269a97b1395..c6f9fb7a88973b5 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -5600,6 +5600,9 @@ struct VarArgSystemZHelper : public VarArgHelperBase {
                        Alignment, RegSaveAreaSize);
   }
 
+
+  // FIXME: This implementation limits OverflowOffset to kParamTLSSize, so we
+  // don't know real overflow size and can't clear shadow beyond kParamTLSSize.
   void copyOverflowArea(IRBuilder<> &IRB, Value *VAListTag) {
     Type *OverflowArgAreaPtrTy = PointerType::getUnqual(*MS.C); // i64*
     Value *OverflowArgAreaPtrPtr = IRB.CreateIntToPtr(


        


More information about the llvm-commits mailing list