[compiler-rt] r203795 - [msan] Test for aggregates passing through ellipsis.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Thu Mar 13 06:18:15 PDT 2014


Author: eugenis
Date: Thu Mar 13 08:18:15 2014
New Revision: 203795

URL: http://llvm.org/viewvc/llvm-project?rev=203795&view=rev
Log:
[msan] Test for aggregates passing through ellipsis.

Modified:
    compiler-rt/trunk/lib/msan/tests/msan_test.cc

Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=203795&r1=203794&r2=203795&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
+++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Thu Mar 13 08:18:15 2014
@@ -2428,6 +2428,41 @@ struct StructByVal {
   int a, b, c, d, e, f;
 };
 
+static void vaargsfn_structbyval(int guard, ...) {
+  va_list vl;
+  va_start(vl, guard);
+  {
+    StructByVal s = va_arg(vl, StructByVal);
+    EXPECT_NOT_POISONED(s.a);
+    EXPECT_POISONED(s.b);
+    EXPECT_NOT_POISONED(s.c);
+    EXPECT_POISONED(s.d);
+    EXPECT_NOT_POISONED(s.e);
+    EXPECT_POISONED(s.f);
+  }
+  {
+    StructByVal s = va_arg(vl, StructByVal);
+    EXPECT_NOT_POISONED(s.a);
+    EXPECT_POISONED(s.b);
+    EXPECT_NOT_POISONED(s.c);
+    EXPECT_POISONED(s.d);
+    EXPECT_NOT_POISONED(s.e);
+    EXPECT_POISONED(s.f);
+  }
+  va_end(vl);
+}
+
+TEST(MemorySanitizer, VAArgStructByVal) {
+  StructByVal s;
+  s.a = 1;
+  s.b = *GetPoisoned<int>();
+  s.c = 2;
+  s.d = *GetPoisoned<int>();
+  s.e = 3;
+  s.f = *GetPoisoned<int>();
+  vaargsfn_structbyval(0, s, s);
+}
+
 NOINLINE void StructByValTestFunc(struct StructByVal s) {
   EXPECT_NOT_POISONED(s.a);
   EXPECT_POISONED(s.b);





More information about the llvm-commits mailing list