[PATCH] D17129: [Compiler-rt][MSan] fix param_tls_limit test
Mohit Bhakkad via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 29 21:58:18 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL262302: [Compiler-rt][MSan] fix param_tls_limit test for platforms where big… (authored by mohit.bhakkad).
Changed prior to commit:
http://reviews.llvm.org/D17129?vs=49350&id=49451#toc
Repository:
rL LLVM
http://reviews.llvm.org/D17129
Files:
compiler-rt/trunk/test/msan/param_tls_limit.cc
Index: compiler-rt/trunk/test/msan/param_tls_limit.cc
===================================================================
--- compiler-rt/trunk/test/msan/param_tls_limit.cc
+++ compiler-rt/trunk/test/msan/param_tls_limit.cc
@@ -20,6 +20,17 @@
// In case of no overflow, it is still poisoned.
#define NO_OVERFLOW(x) assert(__msan_test_shadow(&x, sizeof(x)) == 0)
+#if defined(__x86_64__)
+// In x86_64, if argument is partially outside tls, it is considered completly
+// unpoisoned
+#define PARTIAL_OVERFLOW(x) OVERFLOW(x)
+#else
+// In other archs, bigger arguments are splitted in multiple IR arguments, so
+// they are considered poisoned till tls limit. Checking last byte of such arg:
+#define PARTIAL_OVERFLOW(x) assert(__msan_test_shadow((char *)(&(x) + 1) - 1, 1) == -1)
+#endif
+
+
template<int N>
struct S {
char x[N];
@@ -34,17 +45,17 @@
}
void f801(S<801> s) {
- OVERFLOW(s);
+ PARTIAL_OVERFLOW(s);
}
void f1000(S<1000> s) {
- OVERFLOW(s);
+ PARTIAL_OVERFLOW(s);
}
void f_many(int a, double b, S<800> s, int c, double d) {
NO_OVERFLOW(a);
NO_OVERFLOW(b);
- OVERFLOW(s);
+ PARTIAL_OVERFLOW(s);
OVERFLOW(c);
OVERFLOW(d);
}
@@ -54,7 +65,7 @@
void f_many2(int a, S<800 - 8 - 2> s, int c, double d) {
NO_OVERFLOW(a);
NO_OVERFLOW(s);
- OVERFLOW(c);
+ PARTIAL_OVERFLOW(c);
OVERFLOW(d);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17129.49451.patch
Type: text/x-patch
Size: 1348 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160301/5838cec8/attachment.bin>
More information about the llvm-commits
mailing list