Support tests in freestanding

Summary:
Freestanding is *weird*. The standard allows it to differ in a bunch of odd
manners from regular C++, and the committee would like to improve that
situation. I'd like to make libc++ behave better with what freestanding should
be, so that it can be a tool we use in improving the standard. To do that we
need to try stuff out, both with "freestanding the language mode" and
"freestanding the library subset".

Let's start with the super basic: run the libc++ tests in freestanding, using
clang as the compiler, and see what works. The easiest hack to do this:

In utils/libcxx/test/config.py add:

  self.cxx.compile_flags += ['-ffreestanding']

Run the tests and they all fail.

Why? Because in freestanding `main` isn't special. This "not special" property
has two effects: main doesn't get mangled, and main isn't allowed to omit its
`return` statement. The first means main gets mangled and the linker can't
create a valid executable for us to test. The second means we spew out warnings
(ew) and the compiler doesn't insert the `return` we omitted, and main just
falls of the end and does whatever undefined behavior (if you're luck, ud2
leading to non-zero return code).

Let's start my work with the basics. This patch changes all libc++ tests to
declare `main` as `int main(int, char**` so it mangles consistently (enabling us
to declare another `extern "C"` main for freestanding which calls the mangled
one), and adds `return 0;` to all places where it was missing. This touches 6124
files, and I apologize.

The former was done with The Magic Of Sed.

The later was done with a (not quite correct but decent) clang tool:

  https://gist.github.com/jfbastien/793819ff360baa845483dde81170feed

This works for most tests, though I did have to adjust a few places when e.g.
the test runs with `-x c`, macros are used for main (such as for the filesystem
tests), etc.

Once this is in we can create a freestanding bot which will prevent further
regressions. After that, we can start the real work of supporting C++
freestanding fairly well in libc++.

<rdar://problem/47754795>

Reviewers: ldionne, mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, arphaman, miyuki, libcxx-commits

Differential Revision: https://reviews.llvm.org/D57624

llvm-svn: 353086
diff --git a/libcxx/test/std/numerics/numarray/class.gslice/gslice.access/tested_elsewhere.pass.cpp b/libcxx/test/std/numerics/numarray/class.gslice/gslice.access/tested_elsewhere.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/class.gslice/gslice.access/tested_elsewhere.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.gslice/gslice.access/tested_elsewhere.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/default.pass.cpp b/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/default.pass.cpp
index 854b5cb..312425a 100644
--- a/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/default.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/default.pass.cpp
@@ -15,10 +15,12 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::gslice gs;
     assert(gs.start() == 0);
     assert(gs.size().size() == 0);
     assert(gs.stride().size() == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/start_size_stride.pass.cpp b/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/start_size_stride.pass.cpp
index 2faff95..682bb83 100644
--- a/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/start_size_stride.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/start_size_stride.pass.cpp
@@ -16,7 +16,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::size_t a1[] = {1, 2, 3};
     std::size_t a2[] = {4, 5, 6};
@@ -34,4 +34,6 @@
     assert(r[0] == 4);
     assert(r[1] == 5);
     assert(r[2] == 6);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.gslice/nothing_to_do.pass.cpp b/libcxx/test/std/numerics/numarray/class.gslice/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/class.gslice/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.gslice/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.slice/cons.slice/default.pass.cpp b/libcxx/test/std/numerics/numarray/class.slice/cons.slice/default.pass.cpp
index c03de23..92c17b8 100644
--- a/libcxx/test/std/numerics/numarray/class.slice/cons.slice/default.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.slice/cons.slice/default.pass.cpp
@@ -15,10 +15,12 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::slice s;
     assert(s.start() == 0);
     assert(s.size() == 0);
     assert(s.stride() == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.slice/cons.slice/start_size_stride.pass.cpp b/libcxx/test/std/numerics/numarray/class.slice/cons.slice/start_size_stride.pass.cpp
index c74f20d..72bff97 100644
--- a/libcxx/test/std/numerics/numarray/class.slice/cons.slice/start_size_stride.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.slice/cons.slice/start_size_stride.pass.cpp
@@ -15,10 +15,12 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::slice s(1, 3, 2);
     assert(s.start() == 1);
     assert(s.size() == 3);
     assert(s.stride() == 2);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.slice/nothing_to_do.pass.cpp b/libcxx/test/std/numerics/numarray/class.slice/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/class.slice/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.slice/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/class.slice/slice.access/tested_elsewhere.pass.cpp b/libcxx/test/std/numerics/numarray/class.slice/slice.access/tested_elsewhere.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/class.slice/slice.access/tested_elsewhere.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/class.slice/slice.access/tested_elsewhere.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/default.fail.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/default.fail.cpp
index dbad4ee..4429367 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/default.fail.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/default.fail.cpp
@@ -15,7 +15,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     std::gslice_array<int> gs;
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/gslice_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/gslice_array.pass.cpp
index a2f0014..3a91625 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/gslice_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/gslice_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -77,4 +77,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/valarray.pass.cpp
index 147c6e2..e1aca3b 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/valarray.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/addition.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/addition.pass.cpp
index fb1f3b5e..9c82a6f 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/addition.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/addition.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/and.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/and.pass.cpp
index 4aa5f02..bfe8ab2 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/and.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/and.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/divide.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/divide.pass.cpp
index 9631d67..ec54bc4 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/divide.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/divide.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/modulo.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/modulo.pass.cpp
index d74ceaf..63ad3a7 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/modulo.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/modulo.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/multiply.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/multiply.pass.cpp
index 9ed9fcd..b22fd30 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/multiply.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/multiply.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/or.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/or.pass.cpp
index f6c1007..0b06893 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/or.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/or.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_left.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_left.pass.cpp
index 9298792..912e48a 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_left.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_left.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_right.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_right.pass.cpp
index e617158..2c8598f 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_right.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_right.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/subtraction.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/subtraction.pass.cpp
index 6b5075e..8b1271b 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/subtraction.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/subtraction.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/xor.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/xor.pass.cpp
index 285e44c..9a981ec 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/xor.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/xor.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.fill/assign_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.fill/assign_value.pass.cpp
index d3e9870..c7c0925 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.fill/assign_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.fill/assign_value.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -70,4 +70,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.gslice.array/types.pass.cpp b/libcxx/test/std/numerics/numarray/template.gslice.array/types.pass.cpp
index 4fcc771..9263c0e 100644
--- a/libcxx/test/std/numerics/numarray/template.gslice.array/types.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.gslice.array/types.pass.cpp
@@ -17,7 +17,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::gslice_array<int>::value_type, int>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/default.fail.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/default.fail.cpp
index 203a917..988cdad 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/default.fail.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/default.fail.cpp
@@ -15,7 +15,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     std::indirect_array<int> ia;
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/indirect_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/indirect_array.pass.cpp
index 5b27d5e..c19152b 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/indirect_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/indirect_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -76,4 +76,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/valarray.pass.cpp
index f3f0a49..0bc4b58 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/valarray.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/addition.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/addition.pass.cpp
index 297b9ed..3ed95f9 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/addition.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/addition.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/and.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/and.pass.cpp
index 1dcb9c0..00fd2f1 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/and.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/and.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/divide.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/divide.pass.cpp
index 1112bca..1a9ca26 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/divide.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/divide.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/modulo.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/modulo.pass.cpp
index 061735a..bad0b95 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/modulo.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/modulo.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/multiply.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/multiply.pass.cpp
index d64ff33..7e78f0a 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/multiply.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/multiply.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/or.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/or.pass.cpp
index 1124033..ba32acc 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/or.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/or.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_left.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_left.pass.cpp
index 160bb80..deff80c 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_left.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_left.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_right.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_right.pass.cpp
index fbebc1a..d2ac739 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_right.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_right.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/subtraction.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/subtraction.pass.cpp
index 1d4a5bf..d94422c 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/subtraction.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/subtraction.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/xor.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/xor.pass.cpp
index 0a64344..06e0668 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/xor.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/xor.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.fill/assign_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.fill/assign_value.pass.cpp
index d49f2a0..e327d26 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.fill/assign_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.fill/assign_value.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -70,4 +70,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.indirect.array/types.pass.cpp b/libcxx/test/std/numerics/numarray/template.indirect.array/types.pass.cpp
index 6cc9988..5d06c5b 100644
--- a/libcxx/test/std/numerics/numarray/template.indirect.array/types.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.indirect.array/types.pass.cpp
@@ -17,7 +17,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::indirect_array<int>::value_type, int>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/default.fail.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/default.fail.cpp
index 5bec2dc..f22298b 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/default.fail.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/default.fail.cpp
@@ -15,7 +15,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     std::mask_array<int> s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
index d160405..22ce22a 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
@@ -62,4 +62,6 @@
     std::mask_array<int> const & r = (m1 = m2);
     assert(&r == &m1);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/valarray.pass.cpp
index e7e0d37..e364c44 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/valarray.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/addition.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/addition.pass.cpp
index 084a0d1..e8f0958 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/addition.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/addition.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/and.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/and.pass.cpp
index e797343..ab29379 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/and.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/and.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/divide.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/divide.pass.cpp
index dc7bbb2..cd67632 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/divide.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/divide.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/modulo.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/modulo.pass.cpp
index 302cdcc..7cf8b58 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/modulo.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/modulo.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/multiply.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/multiply.pass.cpp
index cfe28220..537bf40 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/multiply.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/multiply.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/or.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/or.pass.cpp
index 2fdfe0d..d0297b8 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/or.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/or.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_left.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_left.pass.cpp
index aaf6f2d..eee4c1d 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_left.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_left.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_right.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_right.pass.cpp
index 15d745e..b65c19f 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_right.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_right.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/subtraction.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/subtraction.pass.cpp
index 7b09a0e..40fddd1 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/subtraction.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/subtraction.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/xor.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/xor.pass.cpp
index 5487ea0..a04b6da 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/xor.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/xor.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -45,4 +45,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.fill/assign_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.fill/assign_value.pass.cpp
index 63558d8..bb4fd85 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.fill/assign_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.fill/assign_value.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -41,4 +41,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/types.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/types.pass.cpp
index 6848c65..1d4acea 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/types.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/types.pass.cpp
@@ -17,7 +17,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::mask_array<int>::value_type, int>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/default.fail.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/default.fail.cpp
index 59f5fdf..90b1845 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/default.fail.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/default.fail.cpp
@@ -15,7 +15,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     std::slice_array<int> s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/slice_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/slice_array.pass.cpp
index 40dc0be..9683c7d 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/slice_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/slice_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
@@ -50,4 +50,6 @@
     std::slice_array<int> const & s3 = (s1 = s2);
     assert(&s1 == &s3);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/valarray.pass.cpp
index 7ea08cf..88a5b44 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/valarray.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] == -5);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/addition.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/addition.pass.cpp
index 5934c20..0433877 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/addition.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/addition.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] ==  8);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/and.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/and.pass.cpp
index 3af4653..90bbe4e 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/and.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/and.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {1, 2, 3, 4, 5};
@@ -39,4 +39,6 @@
     assert(v1[13] ==  5);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/divide.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/divide.pass.cpp
index 508ebbb..ae1383b 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/divide.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/divide.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] == -2);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/modulo.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/modulo.pass.cpp
index 7b3919e..89c1acf 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/modulo.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/modulo.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] ==  3);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/multiply.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/multiply.pass.cpp
index ffcd854..b7c6b13 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/multiply.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/multiply.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] == -65);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/or.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/or.pass.cpp
index b405442..0f37579 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/or.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/or.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {1, 2, 3, 4, 5};
@@ -39,4 +39,6 @@
     assert(v1[13] == 13);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_left.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_left.pass.cpp
index fcf51bb..547a8cd 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_left.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_left.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {1, 2, 3, 4, 5};
@@ -39,4 +39,6 @@
     assert(v1[13] == 416);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_right.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_right.pass.cpp
index 4c79b55..99c4ef9 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_right.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_right.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {1, 2, 3, 4, 5};
@@ -39,4 +39,6 @@
     assert(v1[13] ==  0);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/subtraction.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/subtraction.pass.cpp
index aae003c..db513bc 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/subtraction.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/subtraction.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] == 18);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/xor.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/xor.pass.cpp
index afebc88..4ecba47 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/xor.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/xor.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {1, 2, 3, 4, 5};
@@ -39,4 +39,6 @@
     assert(v1[13] ==  8);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.fill/assign_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.fill/assign_value.pass.cpp
index ed1b219..ab2156b 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.fill/assign_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.fill/assign_value.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     std::valarray<int> v1(a1, sizeof(a1)/sizeof(a1[0]));
@@ -37,4 +37,6 @@
     assert(v1[13] == 20);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.slice.array/types.pass.cpp b/libcxx/test/std/numerics/numarray/template.slice.array/types.pass.cpp
index 0d1989a..fccde7e 100644
--- a/libcxx/test/std/numerics/numarray/template.slice.array/types.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.slice.array/types.pass.cpp
@@ -17,7 +17,9 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::slice_array<int>::value_type, int>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/types.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/types.pass.cpp
index 301192e..f37ba0f 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/types.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/types.pass.cpp
@@ -18,8 +18,10 @@
 #include <valarray>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::valarray<int>::value_type, int>::value), "");
     static_assert((std::is_same<std::valarray<double>::value_type, double>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/access.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/access.pass.cpp
index dc90dbe..d921541 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/access.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/access.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
             assert(v[i] == static_cast<int>(i));
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/const_access.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/const_access.pass.cpp
index a4c8144..a0174cc 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/const_access.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.access/const_access.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -27,4 +27,6 @@
             assert(v[i] == a[i]);
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/copy_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/copy_assign.pass.cpp
index 24f6cc5..777d922 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/copy_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/copy_assign.pass.cpp
@@ -31,7 +31,7 @@
     return lhs.x_ == rhs.x_;
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -82,4 +82,6 @@
             assert(v2[i] == v[i]);
         assert(!S::default_ctor_called);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/gslice_array_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/gslice_array_assign.pass.cpp
index 625cf17..df5ae91 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/gslice_array_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/gslice_array_assign.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -54,4 +54,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/indirect_array_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/indirect_array_assign.pass.cpp
index 3c351d0b..f8b5243 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/indirect_array_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/indirect_array_assign.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -54,4 +54,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/initializer_list_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/initializer_list_assign.pass.cpp
index 4f9b60d..1f9e5a5 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/initializer_list_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/initializer_list_assign.pass.cpp
@@ -33,7 +33,7 @@
     return lhs.x_ == rhs.x_;
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -80,4 +80,6 @@
             assert(v2[i] == a[i]);
         assert(!S::default_ctor_called);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/mask_array_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/mask_array_assign.pass.cpp
index 592e306..aeb95a1 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/mask_array_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/mask_array_assign.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -31,4 +31,6 @@
     assert(v2[ 2] ==  4);
     assert(v2[ 3] ==  7);
     assert(v2[ 4] == 11);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/move_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/move_assign.pass.cpp
index 263c093..522c0a2 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/move_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/move_assign.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -60,4 +60,6 @@
                 assert(v2[i][j] == a[i][j]);
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/slice_array_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/slice_array_assign.pass.cpp
index 5ccfa2e..68b0e37 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/slice_array_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/slice_array_assign.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     std::valarray<int> v1(a, sizeof(a)/sizeof(a[0]));
@@ -27,4 +27,6 @@
     assert(v[2] == 7);
     assert(v[3] == 10);
     assert(v[4] == 13);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/value_assign.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/value_assign.pass.cpp
index c722f8b..3adb146 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/value_assign.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/value_assign.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -28,4 +28,6 @@
         for (std::size_t i = 0; i < v.size(); ++i)
             assert(v[i] == 7);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp
index d6f7c57..60b3071 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp
index 6c37d2b..2873721 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp
index a5cccdc..fdb9975 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp
index bff87ab..a309767 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp
index e574de2..a8ef915 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp
index 0dee79d..263ac82 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp
index 5dc7ca5..79cfeb0 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v2[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp
index 0e306ce..b0ea0a2 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp
index 97e3b9b..df962a0 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp
index ba44c57..1be8942 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp
index 67ed8bc..3700e5c 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp
index 730ac7f..c8c5d1e 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp
index 91ea80e..f642ce43 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp
index abbb002..8cba6b4 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp
index f5fc5c7..d50971b 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp
index 00f5e25..670599a 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp
index 00ac963b..f7e3da5 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp
index a039f9f..9632799 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp
index f9d8ba3..bf08055 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -33,4 +33,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp
index 02c1398..0a3d320 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -30,4 +30,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == v2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/copy.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/copy.pass.cpp
index a97a250..8a9c6ba 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/copy.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/copy.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -52,4 +52,6 @@
                 assert(v2[i][j] == v[i][j]);
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/default.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/default.pass.cpp
index ff4a7a2..b560398 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/default.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/default.pass.cpp
@@ -22,7 +22,7 @@
 
 bool S::ctor_called = false;
 
-int main()
+int main(int, char**)
 {
     {
         std::valarray<int> v;
@@ -45,4 +45,6 @@
         assert(v.size() == 0);
         assert(!S::ctor_called);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/gslice_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/gslice_array.pass.cpp
index 7e061f5..fdab3e3e 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/gslice_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/gslice_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -53,4 +53,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/indirect_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/indirect_array.pass.cpp
index e525b2a..3a62b0a 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/indirect_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/indirect_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -53,4 +53,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/initializer_list.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/initializer_list.pass.cpp
index bd47c57..1f5986e 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/initializer_list.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/initializer_list.pass.cpp
@@ -17,7 +17,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -37,4 +37,6 @@
         for (unsigned i = 0; i < N; ++i)
             assert(v[i] == a[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/mask_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/mask_array.pass.cpp
index e9deea9..4559c36 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/mask_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/mask_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -30,4 +30,6 @@
     assert(v2[ 2] ==  4);
     assert(v2[ 3] ==  7);
     assert(v2[ 4] == 11);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/move.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/move.pass.cpp
index 010649a..0ef6f3c 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/move.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/move.pass.cpp
@@ -19,7 +19,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -58,4 +58,6 @@
                 assert(v2[i][j] == a[i][j]);
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/pointer_size.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/pointer_size.pass.cpp
index 84d51b0..a0b4a31 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/pointer_size.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/pointer_size.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -49,4 +49,6 @@
                 assert(v[i][j] == a[i][j]);
         }
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/size.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/size.pass.cpp
index 7e539d9..95417e5 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/size.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/size.pass.cpp
@@ -24,7 +24,7 @@
 
 size_t S::cnt_dtor = 0;
 
-int main()
+int main(int, char**)
 {
     {
         std::valarray<int> v(100);
@@ -51,4 +51,6 @@
             assert(v[i].x == 1);
     }
     assert(S::cnt_dtor == 100);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/slice_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/slice_array.pass.cpp
index c566767..332a617 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/slice_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/slice_array.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     std::valarray<int> v1(a, sizeof(a)/sizeof(a[0]));
@@ -26,4 +26,6 @@
     assert(v[2] == 7);
     assert(v[3] == 10);
     assert(v[4] == 13);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/value_size.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/value_size.pass.cpp
index 6e43de7..03e4add 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/value_size.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/value_size.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         std::valarray<int> v(5, 100);
@@ -35,4 +35,6 @@
         for (int i = 0; i < 100; ++i)
             assert(v[i].size() == 10);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_cref.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_cref.pass.cpp
index 7d4d079..6527787 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_cref.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_cref.pass.cpp
@@ -19,7 +19,7 @@
 
 T f(const T& t) {return t + 5;}
 
-int main()
+int main(int, char**)
 {
     {
         T a1[] = {1, 2, 3, 4,  5,  6,  7,  8,  9, 10};
@@ -47,4 +47,6 @@
         for (unsigned i = 0; i < N1; ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_value.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_value.pass.cpp
index d438100..fd100b5 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_value.pass.cpp
@@ -19,7 +19,7 @@
 
 T f(T t) {return t + 5;}
 
-int main()
+int main(int, char**)
 {
     {
         T a1[] = {1, 2, 3, 4,  5,  6,  7,  8,  9, 10};
@@ -47,4 +47,6 @@
         for (unsigned i = 0; i < N1; ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/cshift.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/cshift.pass.cpp
index 1aa6a3e..14ca081 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/cshift.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/cshift.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -123,4 +123,6 @@
         for (unsigned i = 0; i < N1; ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp
index cc80ea8..bdd84c1 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -36,4 +36,6 @@
         std::valarray<T> v1(a1, N1);
         assert((2*v1).max() == 8.0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp
index 37d8f3a..ca04a93 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -36,4 +36,6 @@
         std::valarray<T> v1(a1, N1);
         assert((2*v1).min() == -6.0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/resize.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/resize.pass.cpp
index 82dd0bd..e92e742 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/resize.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/resize.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -38,4 +38,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v1[i] == 0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/shift.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/shift.pass.cpp
index 2be57bf..1a7628e 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/shift.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/shift.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -123,4 +123,6 @@
         for (unsigned i = 0; i < N1; ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/size.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/size.pass.cpp
index 3498cc5..f7906272 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/size.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/size.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -37,4 +37,6 @@
         std::valarray<T> v1;
         assert(v1.size() == N1);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/sum.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/sum.pass.cpp
index b1c530a..084f00f 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/sum.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/sum.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -24,4 +24,6 @@
         std::valarray<T> v1(a1, N1);
         assert(v1.sum() == 16.5);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/swap.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/swap.pass.cpp
index 23cf807..12a7d8f 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/swap.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.members/swap.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -82,4 +82,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == v1_save[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_const.pass.cpp
index 32e6b55..d84309f 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -73,4 +73,6 @@
     assert(v1[38] == 38);
     assert(v1[39] == 39);
     assert(v1[40] == 40);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_non_const.pass.cpp
index 12caa61..ac69718 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_non_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -53,4 +53,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_const.pass.cpp
index d210e51..7e5ef15 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -53,4 +53,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_non_const.pass.cpp
index 053e926..82a5f14 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_non_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -54,4 +54,6 @@
     assert(v[21] == 34);
     assert(v[22] == 35);
     assert(v[23] == 36);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_const.pass.cpp
index 3eaafee..d689ce9 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     std::valarray<int> v1(a1, sizeof(a1)/sizeof(a1[0]));
@@ -26,4 +26,6 @@
     assert(v2[2] ==  7);
     assert(v2[3] == 10);
     assert(v2[4] == 13);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_non_const.pass.cpp
index d4cb64c..a6c7cb7 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_non_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     int a2[] = {-1, -2, -3, -4, -5};
@@ -39,4 +39,6 @@
     assert(v1[13] == -5);
     assert(v1[14] == 14);
     assert(v1[15] == 15);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_const.pass.cpp
index 77e86ac..13cafbcc 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -30,4 +30,6 @@
     assert(v2[ 2] ==  4);
     assert(v2[ 3] ==  7);
     assert(v2[ 4] == 11);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_non_const.pass.cpp
index 6ea9e18..34b4cfd 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_non_const.pass.cpp
@@ -15,7 +15,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     int a1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
     const std::size_t N1 = sizeof(a1)/sizeof(a1[0]);
@@ -31,4 +31,6 @@
     assert(v2[ 2] ==  4);
     assert(v2[ 3] ==  7);
     assert(v2[ 4] == 11);
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/bit_not.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/bit_not.pass.cpp
index 8bb23c0..7f31355 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/bit_not.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/bit_not.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -52,4 +52,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == ~(2*v[i]));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/negate.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/negate.pass.cpp
index 2827488..a89b24d 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/negate.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/negate.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -62,4 +62,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == -2*v[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
index 64e9021..3975510 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -38,4 +38,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == !(2 * v[i]));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/plus.pass.cpp b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/plus.pass.cpp
index 113bb12..b1f7f31 100644
--- a/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/plus.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/plus.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -62,4 +62,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == +2*v[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/nothing_to_do.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_valarray.pass.cpp
index d195f1d..3be9074 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_value.pass.cpp
index 4e083bd..4f1bf8a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_value_valarray.pass.cpp
index 89fdd06..0599012 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_valarray.pass.cpp
index 4b76423..50c6a14 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_value.pass.cpp
index babecfe..f5e0b27 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_value_valarray.pass.cpp
index 29316e4..dde6955 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_valarray.pass.cpp
index af78964..f1df168 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_value.pass.cpp
index e6760c2..0ea4f0c 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_value_valarray.pass.cpp
index 1d984be..f2131d1 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_valarray.pass.cpp
index 948688b..22d82f4 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_value.pass.cpp
index 101b32d..f498e7a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_value_valarray.pass.cpp
index dc2ecc0..fbd407c 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_valarray.pass.cpp
index c01d33a..f305243 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_value.pass.cpp
index 328afb2..90fa4b4 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_value_valarray.pass.cpp
index e5ca459..295dd6b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_valarray.pass.cpp
index c65a7b2..19a410e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_value.pass.cpp
index 46b7fbb..2aef9c1 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_value_valarray.pass.cpp
index 97b7791..ba598f6 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_valarray.pass.cpp
index 90f9d75..e71fa10 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_value.pass.cpp
index 5136d3f..3945c1b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_value_valarray.pass.cpp
index 697b46d..9327634 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_valarray.pass.cpp
index 4194c19..9422d6b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_value.pass.cpp
index 4aabb8a..8a68f30 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_value_valarray.pass.cpp
index cccdca1..519fd2b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_valarray.pass.cpp
index c15b794..bc5e732 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_value.pass.cpp
index 155ea25..330f5e0a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_value_valarray.pass.cpp
index b825ad5..4fa8bb2 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_valarray.pass.cpp
index 5e07f5d..fd4fb08 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -32,4 +32,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_value.pass.cpp
index bc22eba..c5082f5 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_value.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_value_valarray.pass.cpp
index 14574a1..377f03e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_value_valarray.pass.cpp
@@ -16,7 +16,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == a2[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_valarray.pass.cpp
index 3e0951b..3f3ede0 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_value.pass.cpp
index 75bce73..de5808e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -42,4 +42,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_value_valarray.pass.cpp
index a6cd5e8..c73ec1e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -42,4 +42,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_valarray.pass.cpp
index 3b43c10..187126f 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_value.pass.cpp
index 1bd1fa0..01c04a6 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_value_valarray.pass.cpp
index 5fb05f6..b0db6a0 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_valarray.pass.cpp
index 6f7678f..c8de620 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_value.pass.cpp
index f26e946..cf568b5 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_value_valarray.pass.cpp
index 2c795aa..c66a60e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_valarray.pass.cpp
index 0346876..351b662 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_value.pass.cpp
index 970f8d8..f895b07 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_value_valarray.pass.cpp
index ad30ae4..a54b770 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_valarray.pass.cpp
index 86e5553..c8812f3 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_value.pass.cpp
index d520a21..03caf34 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_value_valarray.pass.cpp
index 2055f75..5026b73 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_valarray.pass.cpp
index 0eb137c..59943f9 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_value.pass.cpp
index d7d6b7d..9ced475 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_value_valarray.pass.cpp
index 34419bd..770d5a9 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_valarray.pass.cpp
index 4daca53..1892a70 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_value.pass.cpp
index add76d1..3cdb897 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_value_valarray.pass.cpp
index a3503805..49ffeda 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_valarray.pass.cpp
index ef2b165..f62cb4f 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -34,4 +34,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_value.pass.cpp
index 60f14f2..df73f85 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_value.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -42,4 +42,6 @@
         for (std::size_t i = 0; i < v1.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_value_valarray.pass.cpp
index 0d9a312..3798acc 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_value_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -42,4 +42,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.special/swap.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.special/swap.pass.cpp
index 4783508..2200ddf 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.special/swap.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.special/swap.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -84,4 +84,6 @@
         for (std::size_t i = 0; i < v2.size(); ++i)
             assert(v2[i] == v1_save[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/abs_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/abs_valarray.pass.cpp
index ff5c7d8..d721c84 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/abs_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/abs_valarray.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -31,4 +31,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(v3[i] == a3[i]);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
index bee16ab..18b5bcb 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
index 4cecd8c..9401200 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
index 7e81821..fcbd63b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -50,4 +50,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
index 3ab7375..59928d44 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
index 07e7894..ed42627 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
index 567f568..7176b93 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
index 182b8bc..bc58e4a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
index fb0965b..b453edd 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
index 3c19e3e..8e95f87 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
index 70ba211..39514ed 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
index 3e616a0..050d58f 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
index 096cd5d..93b8a14 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -50,4 +50,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
index 902c9f3..62c140c 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
index 3944978..0c8a76b 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
index 2cf38b8..92d6f44 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
index fa591d0..190c212 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
index eb40e61..805bde6 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
index 6395ee5..4f5b69d 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
index 10e0a22..c63696a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
@@ -31,7 +31,7 @@
     return a == o.str();
 }
 
-int main()
+int main(int, char**)
 {
     {
         typedef double T;
@@ -48,4 +48,6 @@
         for (std::size_t i = 0; i < v3.size(); ++i)
             assert(is_about(v3[i], a3[i], 10));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.range/begin_const.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.range/begin_const.pass.cpp
index db39ab4..35e5e42 100644
--- a/libcxx/test/std/numerics/numarray/valarray.range/begin_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.range/begin_const.pass.cpp
@@ -17,7 +17,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -26,4 +26,6 @@
         const std::valarray<T> v(a, N);
         assert(v[0] == 1);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.range/begin_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.range/begin_non_const.pass.cpp
index fb4013d..e0d8e71 100644
--- a/libcxx/test/std/numerics/numarray/valarray.range/begin_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.range/begin_non_const.pass.cpp
@@ -17,7 +17,7 @@
 #include <valarray>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -27,4 +27,6 @@
         *begin(v) = 10;
         assert(v[0] == 10);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.range/end_const.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.range/end_const.pass.cpp
index 113216a..d1424d3 100644
--- a/libcxx/test/std/numerics/numarray/valarray.range/end_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.range/end_const.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -28,4 +28,6 @@
         assert(v[v.size()-1] == 5);
         assert(static_cast<std::size_t>(end(v) - begin(v)) == v.size());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.range/end_non_const.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.range/end_non_const.pass.cpp
index c5d5472..5e1cbd4 100644
--- a/libcxx/test/std/numerics/numarray/valarray.range/end_non_const.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.range/end_non_const.pass.cpp
@@ -18,7 +18,7 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
         typedef int T;
@@ -29,4 +29,6 @@
         assert(v[v.size()-1] == 10);
         assert(static_cast<std::size_t>(end(v) - begin(v)) == v.size());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/numerics/numarray/valarray.syn/nothing_to_do.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.syn/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/numerics/numarray/valarray.syn/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.syn/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }