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/strings/basic.string.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
index 10504c5..0fecb1b 100644
--- a/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "poisoned_hash_helper.hpp"
 
-int main() {
+int main(int, char**) {
   test_library_hash_specializations_available();
   {
     test_hash_enabled_for_type<std::string>();
@@ -30,4 +30,6 @@
     test_hash_enabled_for_type<std::u32string>();
 #endif
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
index ea97e64..c2a2ef9 100644
--- a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
@@ -40,7 +40,7 @@
     assert(h(s1) != h(s2));
 }
 
-int main()
+int main(int, char**)
 {
     test<std::string>();
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -51,4 +51,6 @@
     test<std::u32string>();
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
     test<std::wstring>();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp b/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp
index eed5c94..a51d0d9 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp
@@ -21,7 +21,7 @@
 #endif
 
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals::string_literals;
 
@@ -54,4 +54,6 @@
     Lfoo  =  L"ABC"s;     assert( Lfoo ==  L"ABC");   assert( Lfoo == std::wstring  ( L"ABC"));
     ufoo  =  u"ABC"s;     assert( ufoo ==  u"ABC");   assert( ufoo == std::u16string( u"ABC"));
     Ufoo  =  U"ABC"s;     assert( Ufoo ==  U"ABC");   assert( Ufoo == std::u32string( U"ABC"));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal1.fail.cpp b/libcxx/test/std/strings/basic.string.literals/literal1.fail.cpp
index 129d284..be46040 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal1.fail.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal1.fail.cpp
@@ -12,9 +12,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using std::string;
 
     string foo  =   ""s;  // should fail w/conversion operator not found
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal1.pass.cpp b/libcxx/test/std/strings/basic.string.literals/literal1.pass.cpp
index 5134ec7..92777c4 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal1.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal1.pass.cpp
@@ -12,9 +12,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals;
 
     std::string foo  =   ""s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal2.fail.cpp b/libcxx/test/std/strings/basic.string.literals/literal2.fail.cpp
index 3ebbfa2..54a0a9e 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal2.fail.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal2.fail.cpp
@@ -12,7 +12,9 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::string foo  =   ""s;  // should fail w/conversion operator not found
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal2.pass.cpp b/libcxx/test/std/strings/basic.string.literals/literal2.pass.cpp
index ac41ce9..6f73ae9 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal2.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal2.pass.cpp
@@ -12,9 +12,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals::string_literals;
 
     std::string foo  =   ""s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string.literals/literal3.pass.cpp b/libcxx/test/std/strings/basic.string.literals/literal3.pass.cpp
index c5ca670..b7a8d55 100644
--- a/libcxx/test/std/strings/basic.string.literals/literal3.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.literals/literal3.pass.cpp
@@ -12,9 +12,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std;
 
     string foo  =   ""s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/allocator_mismatch.fail.cpp b/libcxx/test/std/strings/basic.string/allocator_mismatch.fail.cpp
index ae63acf..1d01699 100644
--- a/libcxx/test/std/strings/basic.string/allocator_mismatch.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/allocator_mismatch.fail.cpp
@@ -11,7 +11,9 @@
 
 #include <string>
 
-int main()
+int main(int, char**)
 {
     std::basic_string<char, std::char_traits<char>, std::allocator<int> > s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/char.bad.fail.cpp b/libcxx/test/std/strings/basic.string/char.bad.fail.cpp
index d78cb6a..bace91c 100644
--- a/libcxx/test/std/strings/basic.string/char.bad.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/char.bad.fail.cpp
@@ -26,7 +26,7 @@
     int two;
 };
 
-int main()
+int main(int, char**)
 {
     {
 //  array
@@ -49,4 +49,6 @@
     std::basic_string<NotStandardLayout, test_traits<NotStandardLayout> > s;
 //  expected-error-re@string:* {{static_assert failed{{.*}} "Character type of basic_string must be standard-layout"}}
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp
index 6515e27..514d1a8 100644
--- a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp
@@ -54,7 +54,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -74,4 +74,6 @@
     test(S("123"), 3);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp
index b410801..3831da0 100644
--- a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp
@@ -31,7 +31,7 @@
     assert(s.back() == typename S::value_type('z'));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -52,4 +52,6 @@
         assert(false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_back.pass.cpp
index 5034bfa..e1cf707 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_back.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_back.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -46,8 +46,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_cback.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_cback.pass.cpp
index ddffb6c..e3e6db5 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_cback.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_cback.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -42,8 +42,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_cfront.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
index e171883..c9b2ba7 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -42,8 +42,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_cindex.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
index 770ab33..c7b430e 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,8 +44,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_front.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_front.pass.cpp
index 7f2db64..73db224 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_front.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_front.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -46,8 +46,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/db_index.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/db_index.pass.cpp
index 40318e3..d3f2e8d 100644
--- a/libcxx/test/std/strings/basic.string/string.access/db_index.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/db_index.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,8 +44,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp
index 5eee328..d51a12f 100644
--- a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp
@@ -31,7 +31,7 @@
     assert(s.front() == typename S::value_type('z'));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -52,4 +52,6 @@
         assert(false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp
index d529567..3a1224c 100644
--- a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp
@@ -20,7 +20,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -59,4 +59,6 @@
         assert(false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
index 9f09dea..02187c5 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
@@ -40,7 +40,7 @@
     S::allocator_type::throw_after = INT_MAX;
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::basic_string<char, std::char_traits<char>, test_allocator<char> > S;
@@ -60,4 +60,6 @@
     assert(s.capacity() > 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp
index 4f75e01..914842b 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp
@@ -23,7 +23,7 @@
     assert(s.size() == 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -53,4 +53,6 @@
     test(s);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/empty.fail.cpp b/libcxx/test/std/strings/basic.string/string.capacity/empty.fail.cpp
index 2359dea..1bfa388 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/empty.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/empty.fail.cpp
@@ -20,8 +20,10 @@
 
 #include "test_macros.h"
 
-int main ()
+int main(int, char**)
 {
     std::string c;
     c.empty();  // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}}
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp
index 56d925d..47827db 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp
@@ -24,7 +24,7 @@
     assert(s.empty() == (s.size() == 0));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -40,4 +40,6 @@
     test(S("12345678901234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp
index 617d81a..b61ec48 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp
@@ -22,7 +22,7 @@
     assert(s.length() == s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -38,4 +38,6 @@
     test(S("12345678901234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
index 68017f4..8f8c9a3 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
@@ -54,7 +54,7 @@
     test2(s);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -70,4 +70,6 @@
     test(S("12345678901234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
index 414b674..9832df5 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
@@ -35,7 +35,7 @@
     assert ( false );
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -51,4 +51,6 @@
     test(S("12345678901234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
index 33699a7..f49125c 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
@@ -65,7 +65,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -131,4 +131,6 @@
     }
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
index ad37dc3..8b54593 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
@@ -43,7 +43,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     test(S(), S::npos, S("not going to happen"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
index b900534..b5e5aff 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
@@ -43,7 +43,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     test(S(), S::npos, 'a', S("not going to happen"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
index ee91ac1..2c6ce0d 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
@@ -29,7 +29,7 @@
     assert(s.capacity() >= s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -59,4 +59,6 @@
     test(s);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp
index 16b236e..f3f89a5 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp
@@ -22,7 +22,7 @@
     assert(s.size() == c);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -38,4 +38,6 @@
     test(S("12345678901234567890123456789012345678901234567890"), 50);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
index 4f8158ea..3872597 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
@@ -91,7 +91,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
 
     {
@@ -183,4 +183,6 @@
     S s7(s.data(), 2);     // calls ctor(const char *, len)
     assert(s7 == "AB");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp
index a2518a1..765f61e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp
@@ -85,11 +85,13 @@
 
 #endif
 
-int main()
+int main(int, char**)
 {
     test<std::basic_string<char, std::char_traits<char>, test_allocator<char> > >();
 #if TEST_STD_VER >= 11
     test2<std::basic_string<char, std::char_traits<char>, min_allocator<char> > >();
     test2<std::basic_string<char, std::char_traits<char>, explicit_allocator<char> > >();
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp
index 44db3c1..5e77e46 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp
@@ -18,7 +18,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
   // Test that assignment from {} and {ptr, len} are allowed and are not
   // ambiguous.
@@ -32,4 +32,6 @@
     s = {"abc", 2};
     assert(s == "ab");
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
index e3976cf..53f676e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
@@ -28,7 +28,7 @@
     assert(s1.capacity() >= s1.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -46,4 +46,6 @@
     test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), 'a');
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp
index f2cfa8a..0024f2d 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp
@@ -28,7 +28,7 @@
     assert(s2.get_allocator() == s1.get_allocator());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -46,4 +46,6 @@
     test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
index 57a17e8..a635f01 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
@@ -87,7 +87,7 @@
     assert(s2.get_allocator() == a);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -127,4 +127,6 @@
     }
 #endif
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
index a3c1389..8b3b7ac 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
@@ -27,7 +27,7 @@
     assert(s1.capacity() >= s1.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -76,4 +76,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
index 1ab00b6..301876b 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
@@ -21,7 +21,7 @@
 #include "test_macros.h"
 #include "test_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         typedef std::string C;
@@ -35,4 +35,6 @@
         typedef std::basic_string<char, std::char_traits<char>, limited_allocator<char, 10>> C;
         static_assert(!std::is_nothrow_default_constructible<C>::value, "");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
index 5b57fe3..d1372d2 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
@@ -32,7 +32,7 @@
 std::string s;
 std::wstring ws;
 
-int main()
+int main(int, char**)
 {
     {
         typedef std::string C;
@@ -48,4 +48,6 @@
         static_assert(!std::is_nothrow_destructible<C>::value, "");
     }
 #endif // _LIBCPP_VERSION
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
index 7eb364e..9e31d3e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
@@ -46,7 +46,7 @@
 // (13) basic_string(initializer_list<CharT>, A const& = A())
 // (14) basic_string(BSV, A const& = A())
 // (15) basic_string(const T&, size_type, size_type, A const& = A())
-int main()
+int main(int, char**)
 {
   using TestSizeT = test_allocator<char>::size_type;
   { // Testing (1)
@@ -313,4 +313,6 @@
     ASSERT_SAME_TYPE(decltype(w), ExpectW);
     assert(w == L"cd");
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
index 3a8914c..a106203 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
@@ -18,7 +18,7 @@
 #include "test_allocator.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s = {'a', 'b', 'c'};
@@ -40,4 +40,6 @@
         s = {L'a', L'b', L'c'};
         assert(s == L"abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
index 6a512f2..dcb9bb9 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s;
@@ -30,4 +30,6 @@
         s = {'a', 'b', 'c'};
         assert(s == "abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
index 6966e6e..042018c 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
@@ -56,7 +56,7 @@
     assert(s2.capacity() >= s2.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -116,4 +116,6 @@
     test(input_iterator<const char*>(s), input_iterator<const char*>(s+50), A());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.fail.cpp
index f87aac5..57fd550 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.fail.cpp
@@ -35,7 +35,7 @@
 template <typename T>
 struct NotAnAllocator { typedef T value_type; };
 
-int main()
+int main(int, char**)
 {
     { // Not an iterator at all
     std::basic_string s1{NotAnItertor{}, NotAnItertor{}, std::allocator<char>{}}; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'basic_string'}}
@@ -52,4 +52,6 @@
     std::basic_string s1{s, s+10, NotAnAllocator<wchar_t>{}}; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'basic_string'}}
     }
 
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
index dac9ee3..44daab4 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
@@ -36,7 +36,7 @@
 #include "../input_iterator.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     const char* s = "12345678901234";
@@ -89,4 +89,6 @@
     assert(s1.size() == 10);
     assert(s1.compare(0, s1.size(), s, s1.size()) == 0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp
index 1c11368..729c8e8 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp
@@ -32,7 +32,7 @@
     assert(s2.get_allocator() == s1.get_allocator());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -48,4 +48,6 @@
     test(S("1", A()));
     test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
index e426e2d..63e349e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
@@ -34,7 +34,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -74,4 +74,6 @@
     test(S("1"), A());
     test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
index 88bc123..2a00898 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
@@ -62,7 +62,7 @@
     typedef std::false_type is_always_equal;
 };
 
-int main()
+int main(int, char**)
 {
     {
         typedef std::string C;
@@ -93,4 +93,6 @@
         static_assert(!std::is_nothrow_move_assignable<C>::value, "");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
index b039e79..9684fe7 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
@@ -32,7 +32,7 @@
     assert(s1.capacity() >= s1.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -70,4 +70,6 @@
            "1234567890123456789012345678901234567890123456789012345678901234567890"),
          S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
index 374183f..ee839cf 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
@@ -21,7 +21,7 @@
 #include "test_macros.h"
 #include "test_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         typedef std::string C;
@@ -39,4 +39,6 @@
         static_assert( std::is_nothrow_move_constructible<C>::value, "");
 #endif
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
index b68c522..d67f123 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
@@ -51,7 +51,7 @@
     assert(s2.capacity() >= s2.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -85,4 +85,6 @@
     test("123456798012345679801234567980123456798012345679801234567980", A());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
index 1216f3f..4a88548 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
@@ -29,7 +29,7 @@
     assert(s1.capacity() >= s1.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -69,4 +69,6 @@
          "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
index 9645713..75ad883 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
@@ -48,7 +48,7 @@
     assert(s2.capacity() >= s2.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -90,4 +90,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
index 21ed485..d509971 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
@@ -80,7 +80,7 @@
     assert(s2.capacity() >= s2.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -120,4 +120,6 @@
     test(static_cast<char>(100), static_cast<char>(65), A());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view.fail.cpp
index d7a0540..61d5b3d 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view.fail.cpp
@@ -15,8 +15,10 @@
 
 void foo ( const string &s ) {}
 
-int main()
+int main(int, char**)
 {
     std::string_view sv = "ABCDE";
     foo(sv);    // requires implicit conversion from string_view to string
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp
index f50d9e5..b423c32 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp
@@ -71,7 +71,7 @@
   }
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -107,4 +107,6 @@
     test(SV("123456798012345679801234567980123456798012345679801234567980"), A());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp
index 9a50f62..942d990 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp
@@ -28,7 +28,7 @@
     assert(s1.capacity() >= s1.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -70,4 +70,6 @@
          SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
index 23e6668..62ce16e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
@@ -31,10 +31,12 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
     std::string_view sv = "12345678901234";
     std::basic_string s1{sv, 23}; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'basic_string'}}
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
index ee73158..b3adc41 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
@@ -38,7 +38,7 @@
 #include "../input_iterator.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     std::string_view sv = "12345678901234";
@@ -103,4 +103,6 @@
     assert(s1.size() == sv.size());
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
index ce4e695..cff6056 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
@@ -37,10 +37,12 @@
 #include <cassert>
 #include <cstddef>
 
-int main()
+int main(int, char**)
 {
     {
     std::string_view sv = "12345678901234";
     std::basic_string s1{sv, 0, 4, 23}; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'basic_string'}}
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
index daba3bd..983ab78 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
@@ -42,7 +42,7 @@
 #include "../input_iterator.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     std::string_view sv = "12345678901234";
@@ -107,4 +107,6 @@
     assert(s1.size() == 4);
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp
index 05c53ac..44f29be 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp
@@ -140,7 +140,7 @@
 #endif
 #endif
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -224,4 +224,6 @@
     test2583();
 #endif
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp
index 7d1c264..e2afe04 100644
--- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -30,4 +30,6 @@
     assert ( s2.ends_with('e'));
     assert (!s2.ends_with('x'));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp
index 87b9404..a4f8b1a 100644
--- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -59,4 +59,6 @@
     assert (!sNot.ends_with("abcde"));
     assert ( sNot.ends_with("def"));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp
index 3d75e23..cbfffcf 100644
--- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -68,4 +68,6 @@
     assert (!sNot.ends_with(sv5));
     assert ( sNot.ends_with(svNot));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp
index eedc9b9..fbae9fa 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp
@@ -30,7 +30,7 @@
     assert(b == cb);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,4 +44,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
index 720ba53..9886d56 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
@@ -27,7 +27,7 @@
     assert(cb == s.begin());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -41,4 +41,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp
index 07d885a..1a3d307 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp
@@ -23,7 +23,7 @@
     assert(ce == s.end());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -37,4 +37,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
index 2b8837f..687c343 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
@@ -27,7 +27,7 @@
     assert(cb == s.rbegin());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -41,4 +41,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp
index c74b907..86aaad6 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp
@@ -23,7 +23,7 @@
     assert(ce == s.rend());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -37,4 +37,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
index 074fa84..4696323 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,8 +44,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
index 9c63eea..7dbbbbb 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,8 +44,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
index c01b226..1a46f86 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string C;
@@ -46,8 +46,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
index a5a8d91..77caf1b 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string C;
@@ -50,8 +50,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
index b4c7fb3..126c366 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string C;
@@ -48,8 +48,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
index 6a262e0..f1083a4 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string C;
@@ -48,8 +48,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
index f3b5656..c69f8ca 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string C;
@@ -44,8 +44,10 @@
 
 #else
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
 
 #endif
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp
index 8d287f6..86b00a3 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp
@@ -33,7 +33,7 @@
     assert(static_cast<std::size_t>(ce - cs.begin()) == cs.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -47,4 +47,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
index 3d90760..08448b1 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
@@ -20,7 +20,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     { // N3644 testing
         typedef std::string C;
@@ -83,4 +83,6 @@
         assert ( !(ii1 != ii2 ));
         assert ( !(ii1 != cii ));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
index 8de4547..479584c 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
@@ -30,7 +30,7 @@
     assert(b == cb);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -44,4 +44,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp
index 1edcb27..9b54058 100644
--- a/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp
@@ -33,7 +33,7 @@
     assert(static_cast<std::size_t>(ce - cs.rbegin()) == cs.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -47,4 +47,6 @@
     test(S("123"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/nothing_to_do.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp
index f284829..4375240 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp
@@ -71,7 +71,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -196,4 +196,6 @@
     s.append(sv, 0, std::string::npos);
     assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
index 0448386..da74fb4 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
@@ -18,7 +18,7 @@
 #include "test_macros.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("123");
@@ -31,4 +31,6 @@
         s.append({'a', 'b', 'c'});
         assert(s == "123abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
index 08f554b..8f280e8 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
@@ -42,7 +42,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -219,4 +219,6 @@
     s.append(MoveIt(It(std::begin(p))), MoveIt(It(std::end(p) - 1)));
     assert(s == "ABCD");
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
index dec79a6..eba693d 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -76,4 +76,6 @@
     s_long.append(s_long.c_str());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
index 2fb973a..c214ab7 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
@@ -27,7 +27,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     s_long.append(s_long.data(), s_long.size());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
index a2b9ad1..f1b34ad 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
@@ -31,7 +31,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -56,4 +56,6 @@
     s.push_back(vl);
     s.push_back(vl);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
index 59d0199..c406248 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -60,4 +60,6 @@
     test(S("12345678901234567890"), 10, 'a', S("12345678901234567890aaaaaaaaaa"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
index c0c625f..5e551d7 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
index 21ddd9b..37985d0 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
@@ -71,7 +71,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -133,4 +133,6 @@
     test_npos(S(), S("12345"), 5, S(""));
     test_npos(S(), S("12345"), 6, S("not happening"));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp
index 301fc77..d0fb1cc 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp
@@ -27,7 +27,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -79,4 +79,6 @@
          S("1234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp
index b054171..044b372 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp
@@ -70,7 +70,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -191,4 +191,6 @@
     s.assign(sv, 0, std::string::npos);
     assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
index 72097da..692b84b 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
@@ -18,7 +18,7 @@
 #include "test_macros.h"
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("123");
@@ -31,4 +31,6 @@
         s.assign({'a', 'b', 'c'});
         assert(s == "abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
index 4bf805c..c03b5ef 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
@@ -43,7 +43,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -204,4 +204,6 @@
     s.assign(p, p + 4);
     assert(s == "ABCD");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
index 62a173a..325c354 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -74,4 +74,6 @@
     s_long.assign(s_long.c_str() + 30);
     assert(s_long == "nsectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
index 442d8c0..5d3fe26 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
@@ -27,7 +27,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     s_long.assign(s_long.data() + 2, 8 );
     assert(s_long == "rem ipsu");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
index 3d401c8..ac26f36 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
@@ -27,7 +27,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -77,4 +77,6 @@
          S("12345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
index 8c69b13..4e5ecad 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -60,4 +60,6 @@
     test(S("12345678901234567890"), 10, 'a', S(10, 'a'));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
index 274703a..fae45c8 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
@@ -37,7 +37,7 @@
     assert(s.get_allocator() == a);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -113,4 +113,6 @@
     static_assert(noexcept(S().assign(S())), "");  // LWG#2063
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
index 76dd273..8e11b15 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
@@ -71,7 +71,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -133,4 +133,6 @@
     test_npos(S(), S("12345"), 5, S(""));
     test_npos(S(), S("12345"), 6, S("not happening"));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp
index d445ad9..2d1158e 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp
@@ -38,7 +38,7 @@
     assert(s.get_allocator() == a);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -101,4 +101,6 @@
     testAlloc(S(), SV("12345678901234567890"), min_allocator<char>());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
index 81dc332..778fb70 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
@@ -49,7 +49,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -177,4 +177,6 @@
     test(S("abcdefghijklmnopqrst"), s, 21, 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
index 1923c62..12b13d7 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
@@ -28,7 +28,7 @@
     assert(i - s.begin() == pos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -62,4 +62,6 @@
     test(S("abcdefghijklmnopqrst"), 19, S("abcdefghijklmnopqrs"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
index 0eba936..a5e6d12 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
@@ -29,7 +29,7 @@
     assert(i - s.begin() == pos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -147,4 +147,6 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
index e6f2a4e..e6490ab 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -42,4 +42,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrs"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
index a8e31c9..88dace5 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
@@ -88,7 +88,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -298,4 +298,6 @@
     test(S("abcdefghijklmnopqrst"), S(""));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
index d570428..ef6144d 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
@@ -32,7 +32,7 @@
         assert(i == p);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -72,4 +72,6 @@
     test(s, s.begin()+6, 'C', S("a567ABC1432dcb"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp
index 0acc50b..6dd043c 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp
@@ -18,7 +18,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("123456");
@@ -33,4 +33,6 @@
         assert(i - s.begin() == 3);
         assert(s == "123abc456");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
index c1b1687..6d4f1a6 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
@@ -49,7 +49,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -218,4 +218,6 @@
     s.insert(s.begin(), MoveIt(It(std::begin(p))), MoveIt(It(std::end(p) - 1)));
     assert(s == "ABCD");
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
index ac29e3b..699b679 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
@@ -28,7 +28,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -166,4 +166,6 @@
     test(S("abcdefghijklmnopqrst"), 20, 20, '1', S("abcdefghijklmnopqrst11111111111111111111"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp
index fb8c7e6..2b54b67 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp
@@ -1729,7 +1729,7 @@
     test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -1838,4 +1838,6 @@
     assert(s == "");
     s.clear();
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
index ee7ef20..24859fa 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
@@ -47,7 +47,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -233,4 +233,6 @@
     s_long.insert(0, s_long.c_str());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
index 67a0340..3dbd93f 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
@@ -48,7 +48,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -714,4 +714,6 @@
     s_long.insert(0, s_long.data(), s_long.size());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
index e64e9c9..dce8b7d 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
@@ -48,7 +48,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -218,4 +218,6 @@
     test(S("abcdefghijklmnopqrst"), 21, 20, '1', S("can't happen"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
index 2f74fec..93bc3f6 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
@@ -47,7 +47,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -226,4 +226,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
index 23b8852..18a688a 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
@@ -1727,7 +1727,7 @@
     test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 6, S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -1799,4 +1799,6 @@
     test30<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp
index 0596ce9..129389a 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp
@@ -47,7 +47,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -235,4 +235,6 @@
     s_long.insert(0, s_long.c_str());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
index 3c15f6f..2cc4496 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
@@ -25,7 +25,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -43,4 +43,6 @@
     test(S("12345678901234567890"), 'a', S("12345678901234567890a"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
index 7f27559..689389e 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("123");
@@ -30,4 +30,6 @@
         s += {'a', 'b', 'c'};
         assert(s == "123abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
index 3a76969..a9edf17 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
@@ -25,7 +25,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -75,4 +75,6 @@
          S("1234567890123456789012345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
index 53e1cac..f81d4be 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
@@ -26,7 +26,7 @@
     assert(s == expected);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -85,4 +85,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp
index 8e8a1f8..3df49f3 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("123def456");
@@ -30,4 +30,6 @@
         s.replace(s.cbegin() + 3, s.cbegin() + 6, {'a', 'b', 'c'});
         assert(s == "123abc456");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
index fc6f33b..47a1193 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
@@ -963,7 +963,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, str, str+20, S("abcdefghijklmnopqrst12345678901234567890"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -1036,4 +1036,6 @@
     s.replace(s.begin(), s.end(), p, p + 4);
     assert(s == "EFGH");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
index ccbd0ff..8ed1dc3 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
@@ -265,7 +265,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -297,4 +297,6 @@
     s_long.replace(s_long.begin(), s_long.begin(), s_long.c_str());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
index 79ae58f..39b518c 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
@@ -943,7 +943,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -987,4 +987,6 @@
     s_long.replace(s_long.begin(), s_long.begin(), s_long.data(), s_long.size());
     assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
index 8a79b73..e60c69f 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
@@ -265,7 +265,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, 20, '3', S("abcdefghijklmnopqrst33333333333333333333"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -281,4 +281,6 @@
     test2<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
index b47d293..70087366 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
@@ -264,7 +264,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -289,4 +289,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp
index 81ecca6..0acf828 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp
@@ -264,7 +264,7 @@
     test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -282,4 +282,6 @@
     test2<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
index b320eff..2348747 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
@@ -5869,7 +5869,7 @@
     test_npos(S("abcdefghij"), 9, 2, SV("12345"), 6, S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -6025,4 +6025,6 @@
     s.replace(0, 4, arr, 0, std::string::npos);    // calls replace(pos1, n1, string("IJKL"), pos, npos)
     assert(s == "IJKL");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
index 6718242..a6a6c7d 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
@@ -363,7 +363,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -379,4 +379,6 @@
     test2<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
index 53465bf..e305667 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
@@ -1297,7 +1297,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 20, S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -1331,4 +1331,6 @@
     test11<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
index 2e8c452..7d37e10 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
@@ -364,7 +364,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, 20, '2', S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -380,4 +380,6 @@
     test2<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
index 85306d5..c0fad33 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
@@ -362,7 +362,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -387,4 +387,6 @@
     assert(s == "a");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
index 7a75f03..3fa3269 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
@@ -5859,7 +5859,7 @@
     test_npos(S("abcdefghij"), 9, 2, S("12345"), 6, S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -5981,4 +5981,6 @@
     test55<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp
index 9b35da02..542220a 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp
@@ -362,7 +362,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), S("can't happen"));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -380,4 +380,6 @@
     test2<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
index 79adee4..8fdf3fe 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
@@ -31,7 +31,7 @@
     assert(s2 == s1_);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -73,4 +73,6 @@
     test(S("abcdefghijklmnopqrst"), S("12345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/nothing_to_do.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
index 9937863..8e663cb 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
@@ -19,7 +19,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::istringstream in(" abc\n  def\n   ghij");
@@ -77,4 +77,6 @@
         assert(s == L"   ghij");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
index 965137c..b081b55 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
@@ -19,7 +19,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::istringstream in(" abc*  def**   ghij");
@@ -89,4 +89,6 @@
         assert(s == L"   ghij");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
index b2255d0..b1511f2 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("initial text");
@@ -45,4 +45,6 @@
         getline(std::wistringstream(L" abc*  def*   ghij"), s, L'*');
         assert(s == L" abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
index a87529a..cf4772c 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::string s("initial text");
@@ -45,4 +45,6 @@
         getline(std::wistringstream(L" abc\n  def\n   ghij"), s);
         assert(s == L" abc");
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
index 85f399d..389701d 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
@@ -19,7 +19,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::istringstream in("a bc defghij");
@@ -113,4 +113,6 @@
         assert(in.fail());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
index eb272c2..b30fd5a 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
@@ -19,7 +19,7 @@
 
 #include "min_allocator.h"
 
-int main()
+int main(int, char**)
 {
     {
         std::ostringstream out;
@@ -87,4 +87,6 @@
         assert(L"   " + s == out.str());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
index 944bd45..f644f28 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
@@ -33,7 +33,7 @@
     assert(s2 == s1_);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -75,4 +75,6 @@
     test(S("abcdefghijklmnopqrst"), S("12345678901234567890"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
index a00eb17..3f6ce44 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
@@ -53,7 +53,7 @@
     typedef std::true_type is_always_equal;
 };
 
-int main()
+int main(int, char**)
 {
     {
         typedef std::string C;
@@ -81,4 +81,6 @@
         static_assert( noexcept(swap(std::declval<C&>(), std::declval<C&>())), "");
     }
 #endif
+
+  return 0;
 }
diff --git "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/pointer_string.pass.cpp" "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/pointer_string.pass.cpp"
index 527d59d..bf2cc84 100644
--- "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/pointer_string.pass.cpp"
+++ "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/pointer_string.pass.cpp"
@@ -23,7 +23,7 @@
     assert((lhs != rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_pointer.pass.cpp" "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_pointer.pass.cpp"
index b1e6fa7..76e0abe 100644
--- "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_pointer.pass.cpp"
+++ "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_pointer.pass.cpp"
@@ -23,7 +23,7 @@
     assert((lhs != rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
     }
 #endif
+
+  return 0;
 }
diff --git "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string.pass.cpp" "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string.pass.cpp"
index 9825c1b..30aeb50 100644
--- "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string.pass.cpp"
+++ "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string.pass.cpp"
@@ -24,7 +24,7 @@
     assert((lhs != rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string_view.pass.cpp" "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string_view.pass.cpp"
index 7108d81..5b01455 100644
--- "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string_view.pass.cpp"
+++ "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_string_view.pass.cpp"
@@ -22,7 +22,7 @@
     assert((lhs != rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_view_string.pass.cpp" "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_view_string.pass.cpp"
index 8f3906b..2d6957e 100644
--- "a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_view_string.pass.cpp"
+++ "b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op\041=/string_view_string.pass.cpp"
@@ -22,7 +22,7 @@
     assert((lhs != rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
index c24d807..9ab3c06 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
@@ -35,7 +35,7 @@
 }
 #endif
 
-int main() {
+int main(int, char**) {
   {
     typedef std::string S;
     test0('a', S(""), S("a"));
@@ -66,4 +66,6 @@
     test1('a', S("12345678901234567890"), S("a12345678901234567890"));
   }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
index 654eca2..cf13fbb 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
@@ -35,7 +35,7 @@
 }
 #endif
 
-int main() {
+int main(int, char**) {
   {
     typedef std::string S;
     test0("", S(""), S(""));
@@ -127,4 +127,6 @@
           S("abcdefghijklmnopqrst12345678901234567890"));
   }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
index 5196aba..3241114 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
@@ -35,7 +35,7 @@
 }
 #endif
 
-int main() {
+int main(int, char**) {
   {
     typedef std::string S;
     test0(S(""), '1', S("1"));
@@ -66,4 +66,6 @@
     test1(S("abcdefghijklmnopqrst"), '1', S("abcdefghijklmnopqrst1"));
   }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
index ef8b800..4fec848 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
@@ -35,7 +35,7 @@
 }
 #endif
 
-int main() {
+int main(int, char**) {
   {
     typedef std::string S;
     test0(S(""), "", S(""));
@@ -126,4 +126,6 @@
           S("abcdefghijklmnopqrst12345678901234567890"));
   }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
index 2bc38c7..00aaf5c 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
@@ -58,7 +58,7 @@
 
 #endif
 
-int main() {
+int main(int, char**) {
   {
     typedef std::string S;
     test0(S(""), S(""), S(""));
@@ -245,4 +245,6 @@
           S("abcdefghijklmnopqrst12345678901234567890"));
   }
 #endif // TEST_STD_VER >= 11
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
index 11ad5f1..5db04b3 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs == rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
index f020c22..aa79e17 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs == rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
index 39ec5cc..357a91f 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
@@ -24,7 +24,7 @@
     assert((lhs == rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp
index f4791e3..06c16d0 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs == rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp
index fdf89a2..7ebdc09 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs == rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
index dd27087..db28cd4 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs > rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
index 4109eab..56521e9 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs > rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
index 3514ffc..0cfafb8 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
@@ -24,7 +24,7 @@
     assert((lhs > rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp
index 8ad82bf..692fbd4 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs > rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp
index af98fa1..f6a2fa5 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs > rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
index 0d7e5ac..e868531 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs >= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
index 93b9d2a..8aad507 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs >= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
index 06f2320..f0ab16c 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
@@ -24,7 +24,7 @@
     assert((lhs >= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp
index 27c2b35..c7eb3e3 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs >= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp
index ff4a35b..b49c134 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs >= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
index 0c3943d..1609c4d 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs < rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
index d91c3b1..079344b 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs < rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
index 0b05b6c..586faa4 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
@@ -24,7 +24,7 @@
     assert((lhs < rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp
index eec351c..79393de 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs < rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp
index 9b2b7dd..7e8b139 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs < rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
index 5354e6b..cae9233 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs <= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
index 5fe8948..07f9b35 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
@@ -23,7 +23,7 @@
     assert((lhs <= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -65,4 +65,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
index 1261f51..8d40f2f 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
@@ -24,7 +24,7 @@
     assert((lhs <= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp
index bdaa49a..3df9e39 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs <= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp
index 64d286c..cb7b1a4 100644
--- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp
@@ -22,7 +22,7 @@
     assert((lhs <= rhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -66,4 +66,6 @@
     test(SV("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/nothing_to_do.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
index 7c713e4..2677230 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
@@ -30,7 +30,7 @@
         assert(T::eq(str[0], typename S::value_type()));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -48,4 +48,6 @@
     test(S("abcdefghijklmnopqrst"));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
index 9c643a1..6aa0730 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
@@ -47,7 +47,7 @@
         assert(T::eq(str[0], typename S::value_type()));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -74,4 +74,6 @@
     S s4("abcdefghijklmnopqrst"); test_nonconst(s4);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
index 6261ad5..7edf5a8 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
@@ -23,7 +23,7 @@
     assert(s.get_allocator() == a);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef test_allocator<char> A;
@@ -43,4 +43,6 @@
     test(S("abcdefghijklmnopqrst", A()), A());
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
index 6219d6ba..0af8ce0 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
@@ -31,7 +31,7 @@
     assert(sign(s.compare(str)) == sign(x));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -73,4 +73,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp
index ad781f2..abab987 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp
@@ -5840,7 +5840,7 @@
     test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 5, -5);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -5989,4 +5989,6 @@
 //  calls compare(size, size, string(arr), 0, npos)
     assert(s.compare(0, 4, arr, 0, std::string::npos) == 0);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
index aa44e16..4e77fc0 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
@@ -361,7 +361,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -377,4 +377,6 @@
     test2<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
index f9c0244..75efbad 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
@@ -1294,7 +1294,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -1328,4 +1328,6 @@
     test11<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
index 06b5e53..55fd823 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
@@ -360,7 +360,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     assert(s.compare(0, 1, {"abc", 1}) < 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
index 6a231a8..05ba6ac 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
@@ -5836,7 +5836,7 @@
     test_npos(S("abcde"), 0, 0, S("abcdefghij"), 5, -5);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -5958,4 +5958,6 @@
     test55<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp
index 00245e8..94c73ab 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp
@@ -361,7 +361,7 @@
     test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -379,4 +379,6 @@
     test2<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
index 7c3bdb1..279ae30 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
@@ -32,7 +32,7 @@
     assert(sign(s.compare(str)) == sign(x));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -81,4 +81,6 @@
     assert(s.compare({"abc", 1}) < 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp
index 3e123ad..2abc7fc 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp
@@ -31,7 +31,7 @@
     assert(sign(s.compare(sv)) == sign(x));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -75,4 +75,6 @@
     test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
index 2c49946..7bada84 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -98,4 +98,6 @@
     test(S("laenfsbridchgotmkqpj"), 'q', 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
index cb6fc1e..bd20ea1 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -154,4 +154,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
index 708a043..46c5511 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
index 1ea4135..7f12ab1 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.find_first_not_of({"abc", 1}) == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp
index 3cb3e74..54ce737 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
index cf85487..da630f0 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -94,4 +94,6 @@
     test(S("laenfsbridchgotmkqpj"), 'e', 2);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
index 4c43553..2162ea1 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -154,4 +154,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
index c8b62b1..e0bb0f2 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
index fc79c89..1ae2123 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.find_first_of({"abc", 1}) == std::string::npos);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp
index ae29e47..8cd2724 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
index 6276c49..fd77eb8 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -94,4 +94,6 @@
     test(S("laenfsbridchgotmkqpj"), 'i', 19);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
index 5cc9c0b..1234ccb 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -154,4 +154,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
index 76834c2..4c07f4d 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
index 254e639..8232612 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.find_last_not_of({"abc", 1}) == s.size() - 1);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp
index 421ec96..da5054b 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
 //     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
index 2c5359e..4292b1e 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -94,4 +94,6 @@
     test(S("laenfsbridchgotmkqpj"), 'm', 15);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
index 6a32078..0b86a10 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -154,4 +154,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
index 46d61a4..9c5f670 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
index c5f1a3a..f3ddb46 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.find_last_of({"abc", 1}) == std::string::npos);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp
index f98d66e..ccf181f 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
index c346a01..5700d09 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(0 <= x && x + 1 <= s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -94,4 +94,6 @@
     test(S("abcdeabcdeabcdeabcde"), 'c', 2);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
index a6136d3..6e7ae3d 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
@@ -146,7 +146,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -160,4 +160,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
index 176ffbb..fad7507 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
index 482648a..e8a91dd 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.find({"abc", 1}) == std::string::npos);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp
index d84a41e..c1e78af 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
index 9a30a63..46ced31 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x + 1 <= s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -94,4 +94,6 @@
     test(S("abcdeabcdeabcdeabcde"), 'b', 16);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
index 57a4d06..715b5e57 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
@@ -147,7 +147,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     test1<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
index 786affd..e967009 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -383,4 +383,6 @@
     test3<S>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
index c83acbf..74cfb02 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -161,4 +161,6 @@
     assert(s.rfind({"abc", 1}) == std::string::npos);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp
index 3657e028..ea4f9c2 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp
@@ -139,7 +139,7 @@
     test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -155,4 +155,6 @@
     test1<S, SV>();
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
index 767dc50..27af66e 100644
--- a/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
@@ -47,7 +47,7 @@
 #endif
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -173,4 +173,6 @@
     test(S("dplqartnfgejichmoskb"), 21, 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp b/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp
index fb2e3e6..be090c9 100644
--- a/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp
@@ -24,7 +24,7 @@
         assert ( *(c.begin() + static_cast<typename C::difference_type>(i)) == *(std::addressof(*c.begin()) + i));
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -49,4 +49,6 @@
     test_contiguous(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()));
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp
index bc9fb26..8eae5f7 100644
--- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -30,4 +30,6 @@
     assert ( s2.starts_with('a'));
     assert (!s2.starts_with('x'));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp
index ff46fc3..412ed57 100644
--- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -58,4 +58,6 @@
     assert (!sNot.starts_with("abcde"));
     assert ( sNot.starts_with("def"));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp
index acb90a0..c951b4c 100644
--- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp
@@ -16,7 +16,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string S;
@@ -68,4 +68,6 @@
     assert (!sNot.starts_with(sv5));
     assert ( sNot.starts_with(svNot));
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/traits_mismatch.fail.cpp b/libcxx/test/std/strings/basic.string/traits_mismatch.fail.cpp
index 7e57ae1..47524d2 100644
--- a/libcxx/test/std/strings/basic.string/traits_mismatch.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/traits_mismatch.fail.cpp
@@ -11,7 +11,9 @@
 
 #include <string>
 
-int main()
+int main(int, char**)
 {
     std::basic_string<char, std::char_traits<wchar_t>> s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/basic.string/types.pass.cpp b/libcxx/test/std/strings/basic.string/types.pass.cpp
index 0d074fe..5aa2c7c 100644
--- a/libcxx/test/std/strings/basic.string/types.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/types.pass.cpp
@@ -70,7 +70,7 @@
     static_assert(S::npos == -1, "");
 }
 
-int main()
+int main(int, char**)
 {
     test<test_traits<char>, test_allocator<char> >();
     test<std::char_traits<wchar_t>, std::allocator<wchar_t> >();
@@ -81,4 +81,6 @@
 #if TEST_STD_VER >= 11
     test<std::char_traits<char>, min_allocator<char> >();
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/c.strings/cctype.pass.cpp b/libcxx/test/std/strings/c.strings/cctype.pass.cpp
index feb5c29..c26c1e6a 100644
--- a/libcxx/test/std/strings/c.strings/cctype.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cctype.pass.cpp
@@ -70,7 +70,7 @@
 #error toupper defined
 #endif
 
-int main()
+int main(int, char**)
 {
 
     ASSERT_SAME_TYPE(int, decltype(std::isalnum(0)));
@@ -102,4 +102,6 @@
     assert( std::isxdigit('a'));
     assert( std::tolower('A') == 'a');
     assert( std::toupper('a') == 'A');
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/c.strings/cstring.pass.cpp b/libcxx/test/std/strings/c.strings/cstring.pass.cpp
index c61f5c4..c8ee278 100644
--- a/libcxx/test/std/strings/c.strings/cstring.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cstring.pass.cpp
@@ -17,7 +17,7 @@
 #error NULL not defined
 #endif
 
-int main()
+int main(int, char**)
 {
     std::size_t s = 0;
     void* vp = 0;
@@ -60,4 +60,6 @@
     ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(cpc, 0)));
     ASSERT_SAME_TYPE(const char*, decltype(std::strstr(cpc, cpc)));
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/c.strings/cuchar.pass.cpp b/libcxx/test/std/strings/c.strings/cuchar.pass.cpp
index 989ca6b..4271503 100644
--- a/libcxx/test/std/strings/c.strings/cuchar.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cuchar.pass.cpp
@@ -14,6 +14,8 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
index c755885..667910b 100644
--- a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
@@ -31,7 +31,7 @@
 #error WEOF not defined
 #endif
 
-int main()
+int main(int, char**)
 {
     std::mbstate_t mb = {};
     std::size_t s = 0;
@@ -128,4 +128,6 @@
     ASSERT_SAME_TYPE(int,                decltype(std::vwprintf(L"", va)));
     ASSERT_SAME_TYPE(int,                decltype(std::wprintf(L"")));
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
index a7d9560..3bcda1a 100644
--- a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
@@ -90,7 +90,7 @@
 #error wctrans defined
 #endif
 
-int main()
+int main(int, char**)
 {
     std::wint_t w = 0;
     ASSERT_SAME_TYPE(int, decltype(std::iswalnum(w)));
@@ -113,4 +113,6 @@
     ASSERT_SAME_TYPE(std::wint_t,    decltype(std::towupper(w)));
     ASSERT_SAME_TYPE(std::wint_t,    decltype(std::towctrans(w, std::wctrans_t())));
     ASSERT_SAME_TYPE(std::wctrans_t, decltype(std::wctrans("")));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp
index 8f80a53..c60e6db 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     char c = '\0';
     std::char_traits<char>::assign(c, 'a');
@@ -36,4 +36,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp
index 74e0f90..e2cbe3d 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     char s2[3] = {0};
     assert(std::char_traits<char>::assign(s2, 3, char(5)) == s2);
@@ -23,4 +23,6 @@
     assert(s2[1] == char(5));
     assert(s2[2] == char(5));
     assert(std::char_traits<char>::assign(NULL, 0, char(5)) == NULL);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp
index 6370951..4926b62 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::compare("", "", 0) == 0);
     assert(std::char_traits<char>::compare(NULL, NULL, 0) == 0);
@@ -53,4 +53,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp
index bd12bfd..3a8e3bd 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     char s1[] = {1, 2, 3};
     char s2[3] = {0};
@@ -25,4 +25,6 @@
     assert(s2[2] == char(3));
     assert(std::char_traits<char>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char>::copy(s1, NULL, 0) == s1);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp
index ad99e30..0ea0995 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp
@@ -15,7 +15,9 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::eof() == EOF);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp
index 7895baf..f0cef79 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp
@@ -15,8 +15,10 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::eq('a', 'a'));
     assert(!std::char_traits<char>::eq('a', 'A'));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp
index ca6808f..0fbb438 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp
@@ -15,11 +15,13 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert( std::char_traits<char>::eq_int_type('a', 'a'));
     assert(!std::char_traits<char>::eq_int_type('a', 'A'));
     assert(!std::char_traits<char>::eq_int_type(std::char_traits<char>::eof(), 'A'));
     assert( std::char_traits<char>::eq_int_type(std::char_traits<char>::eof(),
                                                 std::char_traits<char>::eof()));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp
index 242d3a1..9745008 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp
@@ -29,7 +29,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     char s1[] = {1, 2, 3};
     assert(std::char_traits<char>::find(s1, 3, char(1)) == s1);
@@ -42,4 +42,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp
index f556c95..8be4e0a 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp
@@ -27,7 +27,7 @@
 #endif
 
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::length("") == 0);
     assert(std::char_traits<char>::length("a") == 1);
@@ -38,4 +38,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
index 4976796..e62090c 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert( std::char_traits<char>::lt('\0', 'A'));
     assert(!std::char_traits<char>::lt('A', '\0'));
@@ -29,4 +29,6 @@
 
     assert( std::char_traits<char>::lt(' ', 'A'));
     assert( std::char_traits<char>::lt('A', '~'));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp
index c1f8859..ecbb619 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     char s1[] = {1, 2, 3};
     assert(std::char_traits<char>::move(s1, s1+1, 2) == s1);
@@ -29,4 +29,6 @@
     assert(s1[2] == char(3));
     assert(std::char_traits<char>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char>::move(s1, NULL, 0) == s1);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp
index 01568e5..1c37a7c 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp
@@ -15,11 +15,13 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::not_eof('a') == 'a');
     assert(std::char_traits<char>::not_eof('A') == 'A');
     assert(std::char_traits<char>::not_eof(0) == 0);
     assert(std::char_traits<char>::not_eof(std::char_traits<char>::eof()) !=
            std::char_traits<char>::eof());
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp
index fbf8f2f..d8a9570 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp
@@ -15,9 +15,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::to_char_type('a') == 'a');
     assert(std::char_traits<char>::to_char_type('A') == 'A');
     assert(std::char_traits<char>::to_char_type(0) == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp
index eb8df3b..dd903f9 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp
@@ -15,9 +15,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char>::to_int_type('a') == 'a');
     assert(std::char_traits<char>::to_int_type('A') == 'A');
     assert(std::char_traits<char>::to_int_type(0) == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/types.pass.cpp
index 6439c1e..30d31eb 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/types.pass.cpp
@@ -19,11 +19,13 @@
 #include <string>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::char_traits<char>::char_type, char>::value), "");
     static_assert((std::is_same<std::char_traits<char>::int_type, int>::value), "");
     static_assert((std::is_same<std::char_traits<char>::off_type, std::streamoff>::value), "");
     static_assert((std::is_same<std::char_traits<char>::pos_type, std::streampos>::value), "");
     static_assert((std::is_same<std::char_traits<char>::state_type, std::mbstate_t>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
index 77b8687..017d0e7 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -40,4 +40,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
index c623baa..8838b81 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char16_t s2[3] = {0};
@@ -25,4 +25,6 @@
     assert(s2[2] == char16_t(5));
     assert(std::char_traits<char16_t>::assign(NULL, 0, char16_t(5)) == NULL);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
index 2e3b18a..d0782c093 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
@@ -28,7 +28,7 @@
 #endif
 
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -58,4 +58,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
index 0bf5d47..102f15a 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
@@ -27,4 +27,6 @@
     assert(std::char_traits<char16_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char16_t>::copy(s1, NULL, 0) == s1);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
index bb0a450..c80b079 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
@@ -15,10 +15,12 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     std::char_traits<char16_t>::int_type i = std::char_traits<char16_t>::eof();
     ((void)i); // Prevent unused warning
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
index f4abe84..1c70510 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -25,4 +25,6 @@
     assert(!std::char_traits<char16_t>::eq(u'a', u'A'));
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
index 9a24cf1..bef97d6 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -28,4 +28,6 @@
     assert( std::char_traits<char16_t>::eq_int_type(std::char_traits<char16_t>::eof(),
                                                     std::char_traits<char16_t>::eof()));
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
index cd31e59..2ca7e53 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
@@ -29,7 +29,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
@@ -44,4 +44,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
index 2a2a357..f487c41 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
@@ -26,7 +26,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -41,4 +41,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
index 4ade9b6..a43a9e4 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -25,4 +25,6 @@
     assert( std::char_traits<char16_t>::lt(u'A', u'a'));
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
index ddf07a0..aa55e0d 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
@@ -31,4 +31,6 @@
     assert(std::char_traits<char16_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char16_t>::move(s1, NULL, 0) == s1);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
index ea6f0ab..bf26b4c 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -28,4 +28,6 @@
     assert(std::char_traits<char16_t>::not_eof(std::char_traits<char16_t>::eof()) !=
            std::char_traits<char16_t>::eof());
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
index 9256a52..738754b 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -26,4 +26,6 @@
 #endif
     assert(std::char_traits<char16_t>::to_char_type(0) == 0);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
index 411f520..83fff60 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -26,4 +26,6 @@
 #endif
     assert(std::char_traits<char16_t>::to_int_type(0) == 0);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
index ae8792c..41e3fd4 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
@@ -20,7 +20,7 @@
 #include <type_traits>
 #include <cstdint>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     static_assert((std::is_same<std::char_traits<char16_t>::char_type, char16_t>::value), "");
@@ -29,4 +29,6 @@
     static_assert((std::is_same<std::char_traits<char16_t>::pos_type, std::u16streampos>::value), "");
     static_assert((std::is_same<std::char_traits<char16_t>::state_type, std::mbstate_t>::value), "");
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
index 90388aa..f77d54f 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -40,4 +40,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
index af69fdc..2698548 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char32_t s2[3] = {0};
@@ -25,4 +25,6 @@
     assert(s2[2] == char32_t(5));
     assert(std::char_traits<char32_t>::assign(NULL, 0, char32_t(5)) == NULL);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
index 5d1cfa8..f2dd01a 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -57,4 +57,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
index d9f983b..8b2d6ce 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
@@ -27,4 +27,6 @@
     assert(std::char_traits<char32_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char32_t>::copy(s1, NULL, 0) == s1);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
index ac04290..5c28f47 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
@@ -15,10 +15,12 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     std::char_traits<char32_t>::int_type i = std::char_traits<char32_t>::eof();
     ((void)i); // Prevent unused warning
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
index aef7ebb..516f38bd 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -25,4 +25,6 @@
     assert(!std::char_traits<char32_t>::eq(U'a', U'A'));
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
index 91b2fb0..5d24115 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -28,4 +28,6 @@
     assert( std::char_traits<char32_t>::eq_int_type(std::char_traits<char32_t>::eof(),
                                                     std::char_traits<char32_t>::eof()));
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
index ac1723a..5a89596 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
@@ -29,7 +29,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
@@ -44,4 +44,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
index c4c01dd..ef2ea34 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
@@ -26,7 +26,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -41,4 +41,6 @@
     static_assert(test_constexpr(), "" );
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
index d3fe9a4..51c1faf 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -25,4 +25,6 @@
     assert( std::char_traits<char32_t>::lt(U'A', U'a'));
 #endif
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
index 0ac49d0..7cda99b 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
@@ -31,4 +31,6 @@
     assert(std::char_traits<char32_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char32_t>::move(s1, NULL, 0) == s1);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
index dbe1dfe..aeba122 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -28,4 +28,6 @@
     assert(std::char_traits<char32_t>::not_eof(std::char_traits<char32_t>::eof()) !=
            std::char_traits<char32_t>::eof());
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
index 1c16a55..75104e7 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -26,4 +26,6 @@
 #endif
     assert(std::char_traits<char32_t>::to_char_type(0) == 0);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
index 4ec9a9b..8299e94 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
@@ -26,4 +26,6 @@
 #endif
     assert(std::char_traits<char32_t>::to_int_type(0) == 0);
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
index 65624dd..5ec558f 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
@@ -20,7 +20,7 @@
 #include <type_traits>
 #include <cstdint>
 
-int main()
+int main(int, char**)
 {
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     static_assert((std::is_same<std::char_traits<char32_t>::char_type, char32_t>::value), "");
@@ -29,4 +29,6 @@
     static_assert((std::is_same<std::char_traits<char32_t>::pos_type, std::u32streampos>::value), "");
     static_assert((std::is_same<std::char_traits<char32_t>::state_type, std::mbstate_t>::value), "");
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp
index b14662d..c669ab9 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp
@@ -25,7 +25,7 @@
     return c == u'a';
 }
 
-int main()
+int main(int, char**)
 {
     char8_t c = u8'\0';
     std::char_traits<char8_t>::assign(c, u8'a');
@@ -34,5 +34,7 @@
     static_assert(test_constexpr(), "");
 }
 #else
-int main () {}
+int main(int, char**) {
+  return 0;
+}
 #endif
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp
index eae7c82..f9c176e 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp
@@ -16,7 +16,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     char8_t s2[3] = {0};
@@ -26,4 +26,6 @@
     assert(s2[2] == char8_t(5));
     assert(std::char_traits<char8_t>::assign(NULL, 0, char8_t(5)) == NULL);
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp
index 0ac815b..063ab5d 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp
@@ -27,7 +27,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char8_t>::compare(u8"", u8"", 0) == 0);
     assert(std::char_traits<char8_t>::compare(NULL, NULL, 0) == 0);
@@ -53,5 +53,7 @@
     static_assert(test_constexpr(), "" );
 }
 #else
-int main () {}
+int main(int, char**) {
+  return 0;
+}
 #endif
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp
index 2f09102..7bf9491 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp
@@ -16,7 +16,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     char8_t s1[] = {1, 2, 3};
@@ -28,4 +28,6 @@
     assert(std::char_traits<char8_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char8_t>::copy(s1, NULL, 0) == s1);
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp
index 9d13d7d..e112556 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp
@@ -16,10 +16,12 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     std::char_traits<char8_t>::int_type i = std::char_traits<char8_t>::eof();
     ((void)i); // Prevent unused warning
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp
index 4d33411..6e32c85 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp
@@ -18,10 +18,12 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert( std::char_traits<char8_t>::eq(u8'a', u8'a'));
     assert(!std::char_traits<char8_t>::eq(u8'a', u8'A'));
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp
index 6cc58eb..8c5e197 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp
@@ -18,7 +18,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert( std::char_traits<char8_t>::eq_int_type(u8'a', u8'a'));
@@ -27,4 +27,6 @@
     assert( std::char_traits<char8_t>::eq_int_type(std::char_traits<char8_t>::eof(),
                                                     std::char_traits<char8_t>::eof()));
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp
index 9d2e62e..170539e 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp
@@ -28,7 +28,7 @@
         && std::char_traits<char8_t>::find(p, 3, u8'4') == nullptr;
 }
 
-int main()
+int main(int, char**)
 {
     char8_t s1[] = {1, 2, 3};
     assert(std::char_traits<char8_t>::find(s1, 3, char8_t(1)) == s1);
@@ -41,5 +41,7 @@
     static_assert(test_constexpr(), "" );
 }
 #else
-int main () {}
+int main(int, char**) {
+  return 0;
+}
 #endif
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp
index 10f8001..ce2c717 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp
@@ -25,7 +25,7 @@
         && std::char_traits<char8_t>::length(u8"abcd") == 4;
 }
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<char8_t>::length(u8"") == 0);
     assert(std::char_traits<char8_t>::length(u8"a") == 1);
@@ -36,5 +36,7 @@
     static_assert(test_constexpr(), "");
 }
 #else
-int main() { }
+int main(int, char**) { 
+  return 0;
+}
 #endif
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp
index 4653007..a4fb125 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp
@@ -18,10 +18,12 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert(!std::char_traits<char8_t>::lt(u8'a', u8'a'));
     assert( std::char_traits<char8_t>::lt(u8'A', u8'a'));
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp
index 5ca5369..a5e1359 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp
@@ -16,7 +16,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     char8_t s1[] = {1, 2, 3};
@@ -32,4 +32,6 @@
     assert(std::char_traits<char8_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char8_t>::move(s1, NULL, 0) == s1);
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp
index 69e8dda..3d1141d 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp
@@ -18,7 +18,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert(std::char_traits<char8_t>::not_eof(u8'a') == u8'a');
@@ -27,4 +27,6 @@
     assert(std::char_traits<char8_t>::not_eof(std::char_traits<char8_t>::eof()) !=
            std::char_traits<char8_t>::eof());
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp
index 0b021d2..4edc494 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp
@@ -18,11 +18,13 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert(std::char_traits<char8_t>::to_char_type(u8'a') == u8'a');
     assert(std::char_traits<char8_t>::to_char_type(u8'A') == u8'A');
     assert(std::char_traits<char8_t>::to_char_type(0) == 0);
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp
index 98974ab..ab3c9dc 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp
@@ -18,11 +18,13 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     assert(std::char_traits<char8_t>::to_int_type(u8'a') == u8'a');
     assert(std::char_traits<char8_t>::to_int_type(u8'A') == u8'A');
     assert(std::char_traits<char8_t>::to_int_type(0) == 0);
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/types.pass.cpp
index cfb20fa..245dcd8 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/types.pass.cpp
@@ -21,7 +21,7 @@
 #include <type_traits>
 #include <cstdint>
 
-int main()
+int main(int, char**)
 {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     static_assert((std::is_same<std::char_traits<char8_t>::char_type,  char8_t>::value), "");
@@ -30,4 +30,6 @@
     static_assert((std::is_same<std::char_traits<char8_t>::pos_type,   std::u16streampos>::value), "");
     static_assert((std::is_same<std::char_traits<char8_t>::state_type, std::mbstate_t>::value), "");
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
index 9b9b0ea..25e4270 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     wchar_t c = L'\0';
     std::char_traits<wchar_t>::assign(c, L'a');
@@ -36,4 +36,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
index 42df408..d4ed434 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     wchar_t s2[3] = {0};
     assert(std::char_traits<wchar_t>::assign(s2, 3, wchar_t(5)) == s2);
@@ -23,4 +23,6 @@
     assert(s2[1] == wchar_t(5));
     assert(s2[2] == wchar_t(5));
     assert(std::char_traits<wchar_t>::assign(NULL, 0, wchar_t(5)) == NULL);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
index d6272f3..1c2e119 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
@@ -27,7 +27,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::compare(L"", L"", 0) == 0);
     assert(std::char_traits<wchar_t>::compare(NULL, NULL, 0) == 0);
@@ -53,4 +53,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
index f90688a..309c213 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     wchar_t s1[] = {1, 2, 3};
     wchar_t s2[3] = {0};
@@ -25,4 +25,6 @@
     assert(s2[2] == wchar_t(3));
     assert(std::char_traits<wchar_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<wchar_t>::copy(s1, NULL, 0) == s1);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
index 9b466a5..6190220 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
@@ -15,7 +15,9 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::eof() == WEOF);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
index a89a000..701a650 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
@@ -15,8 +15,10 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::eq(L'a', L'a'));
     assert(!std::char_traits<wchar_t>::eq(L'a', L'A'));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
index e7e8285..b218186 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
@@ -15,11 +15,13 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert( std::char_traits<wchar_t>::eq_int_type(L'a', L'a'));
     assert(!std::char_traits<wchar_t>::eq_int_type(L'a', L'A'));
     assert(!std::char_traits<wchar_t>::eq_int_type(std::char_traits<wchar_t>::eof(), L'A'));
     assert( std::char_traits<wchar_t>::eq_int_type(std::char_traits<wchar_t>::eof(),
                                                    std::char_traits<wchar_t>::eof()));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
index ed59397..78a9ad5 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
@@ -29,7 +29,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     wchar_t s1[] = {1, 2, 3};
     assert(std::char_traits<wchar_t>::find(s1, 3, wchar_t(1)) == s1);
@@ -42,4 +42,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
index a9176c8..7421892 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
@@ -26,7 +26,7 @@
 }
 #endif
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::length(L"") == 0);
     assert(std::char_traits<wchar_t>::length(L"a") == 1);
@@ -37,4 +37,6 @@
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
index f7950b7..9abd9cf 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
@@ -15,8 +15,10 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(!std::char_traits<wchar_t>::lt(L'a', L'a'));
     assert( std::char_traits<wchar_t>::lt(L'A', L'a'));
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
index d833bc0..341a902 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     wchar_t s1[] = {1, 2, 3};
     assert(std::char_traits<wchar_t>::move(s1, s1+1, 2) == s1);
@@ -29,4 +29,6 @@
     assert(s1[2] == wchar_t(3));
     assert(std::char_traits<wchar_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<wchar_t>::move(s1, NULL, 0) == s1);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
index 751903b..92f08b1 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
@@ -15,11 +15,13 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::not_eof(L'a') == L'a');
     assert(std::char_traits<wchar_t>::not_eof(L'A') == L'A');
     assert(std::char_traits<wchar_t>::not_eof(0) == 0);
     assert(std::char_traits<wchar_t>::not_eof(std::char_traits<wchar_t>::eof()) !=
            std::char_traits<wchar_t>::eof());
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
index 7654c32..f479bec 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
@@ -15,9 +15,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::to_char_type(L'a') == L'a');
     assert(std::char_traits<wchar_t>::to_char_type(L'A') == L'A');
     assert(std::char_traits<wchar_t>::to_char_type(0) == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
index a003bdc..11fe241 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
@@ -15,9 +15,11 @@
 #include <string>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     assert(std::char_traits<wchar_t>::to_int_type(L'a') == L'a');
     assert(std::char_traits<wchar_t>::to_int_type(L'A') == L'A');
     assert(std::char_traits<wchar_t>::to_int_type(0) == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
index c367be4..9781d55 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
@@ -19,11 +19,13 @@
 #include <string>
 #include <type_traits>
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::char_traits<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::char_traits<wchar_t>::int_type, std::wint_t>::value), "");
     static_assert((std::is_same<std::char_traits<wchar_t>::off_type, std::streamoff>::value), "");
     static_assert((std::is_same<std::char_traits<wchar_t>::pos_type, std::wstreampos>::value), "");
     static_assert((std::is_same<std::char_traits<wchar_t>::state_type, std::mbstate_t>::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/char.traits/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/nothing_to_do.pass.cpp
index f77636c..1f764da 100644
--- a/libcxx/test/std/strings/char.traits/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/nothing_to_do.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.classes/typedefs.pass.cpp b/libcxx/test/std/strings/string.classes/typedefs.pass.cpp
index 14fe388..cbc0283 100644
--- a/libcxx/test/std/strings/string.classes/typedefs.pass.cpp
+++ b/libcxx/test/std/strings/string.classes/typedefs.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     static_assert((std::is_same<std::string, std::basic_string<char> >::value), "");
     static_assert((std::is_same<std::wstring, std::basic_string<wchar_t> >::value), "");
@@ -33,4 +33,6 @@
     static_assert((std::is_same<std::u16string, std::basic_string<char16_t> >::value), "");
     static_assert((std::is_same<std::u32string, std::basic_string<char32_t> >::value), "");
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stod.pass.cpp b/libcxx/test/std/strings/string.conversions/stod.pass.cpp
index 9909497..d13b695 100644
--- a/libcxx/test/std/strings/string.conversions/stod.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stod.pass.cpp
@@ -18,7 +18,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stod("0") == 0);
     assert(std::stod(L"0") == 0);
@@ -185,4 +185,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stof.pass.cpp b/libcxx/test/std/strings/string.conversions/stof.pass.cpp
index 8e7f4b4..2c8e4c9 100644
--- a/libcxx/test/std/strings/string.conversions/stof.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stof.pass.cpp
@@ -22,7 +22,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stof("0") == 0);
     assert(std::stof(L"0") == 0);
@@ -186,4 +186,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stoi.pass.cpp b/libcxx/test/std/strings/string.conversions/stoi.pass.cpp
index 3699833..b3e4163 100644
--- a/libcxx/test/std/strings/string.conversions/stoi.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stoi.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stoi("0") == 0);
     assert(std::stoi(L"0") == 0);
@@ -109,4 +109,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stol.pass.cpp b/libcxx/test/std/strings/string.conversions/stol.pass.cpp
index 8e18a00..ef0cbb4 100644
--- a/libcxx/test/std/strings/string.conversions/stol.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stol.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stol("0") == 0);
     assert(std::stol(L"0") == 0);
@@ -113,4 +113,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stold.pass.cpp b/libcxx/test/std/strings/string.conversions/stold.pass.cpp
index 4677bd7..5b21fd0 100644
--- a/libcxx/test/std/strings/string.conversions/stold.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stold.pass.cpp
@@ -19,7 +19,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stold("0") == 0);
     assert(std::stold(L"0") == 0);
@@ -188,4 +188,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stoll.pass.cpp b/libcxx/test/std/strings/string.conversions/stoll.pass.cpp
index f8a5a6b..73d5e82 100644
--- a/libcxx/test/std/strings/string.conversions/stoll.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stoll.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stoll("0") == 0);
     assert(std::stoll(L"0") == 0);
@@ -112,4 +112,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stoul.pass.cpp b/libcxx/test/std/strings/string.conversions/stoul.pass.cpp
index e60a6a0..6ef8613 100644
--- a/libcxx/test/std/strings/string.conversions/stoul.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stoul.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stoul("0") == 0);
     assert(std::stoul(L"0") == 0);
@@ -111,4 +111,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/stoull.pass.cpp b/libcxx/test/std/strings/string.conversions/stoull.pass.cpp
index 3236966..3e21c68 100644
--- a/libcxx/test/std/strings/string.conversions/stoull.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/stoull.pass.cpp
@@ -21,7 +21,7 @@
 
 #include "test_macros.h"
 
-int main()
+int main(int, char**)
 {
     assert(std::stoull("0") == 0);
     assert(std::stoull(L"0") == 0);
@@ -112,4 +112,6 @@
         assert(idx == 0);
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/to_string.pass.cpp b/libcxx/test/std/strings/string.conversions/to_string.pass.cpp
index 8644251..23729cd 100644
--- a/libcxx/test/std/strings/string.conversions/to_string.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/to_string.pass.cpp
@@ -112,7 +112,7 @@
     }
 }
 
-int main()
+int main(int, char**)
 {
     test_signed<int>();
     test_signed<long>();
@@ -123,4 +123,6 @@
     test_float<float>();
     test_float<double>();
     test_float<long double>();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
index 82c3f61..02a262a 100644
--- a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
@@ -112,7 +112,7 @@
     }
 }
 
-int main()
+int main(int, char**)
 {
     test_signed<int>();
     test_signed<long>();
@@ -123,4 +123,6 @@
     test_float<float>();
     test_float<double>();
     test_float<long double>();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/char.bad.fail.cpp b/libcxx/test/std/strings/string.view/char.bad.fail.cpp
index 3d04cd0..5224666 100644
--- a/libcxx/test/std/strings/string.view/char.bad.fail.cpp
+++ b/libcxx/test/std/strings/string.view/char.bad.fail.cpp
@@ -26,7 +26,7 @@
     int two;
 };
 
-int main()
+int main(int, char**)
 {
     {
 //  array
@@ -49,4 +49,6 @@
     std::basic_string_view<NotStandardLayout, test_traits<NotStandardLayout> > sv;
 //  expected-error-re@string_view:* {{static_assert failed{{.*}} "Character type of basic_string_view must be standard-layout"}}
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp
index b4b2667..3d741c3 100644
--- a/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp
@@ -36,7 +36,7 @@
 #endif
 }
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
 
@@ -59,4 +59,6 @@
     static_assert ( sv.at(1) == 'B', "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp
index 8c8fd42..4505f1c 100644
--- a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp
@@ -24,7 +24,7 @@
     return &sv.back() == s + len - 1;
     }
 
-int main () {
+int main(int, char**) {
     assert ( test ( "ABCDE", 5 ));
     assert ( test ( "a", 1 ));
 
@@ -46,4 +46,6 @@
     static_assert ( sv.back()  == 'B', "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp
index 85e02ce..9ab83df 100644
--- a/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp
@@ -27,7 +27,7 @@
 #endif
     }
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
 
@@ -50,4 +50,6 @@
     static_assert( sv.data() == s, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp
index 6e73202..554ed1b 100644
--- a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp
@@ -24,7 +24,7 @@
     return &sv.front() == s;
     }
 
-int main () {
+int main(int, char**) {
     assert ( test ( "ABCDE", 5 ));
     assert ( test ( "a", 1 ));
 
@@ -46,4 +46,6 @@
     static_assert ( sv.front()  == 'A', "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp
index 87598df..33992de 100644
--- a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp
@@ -26,7 +26,7 @@
         }
     }
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
 
@@ -49,4 +49,6 @@
     static_assert ( sv[1]  == 'B', "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp b/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
index 93cc762..025d905 100644
--- a/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
@@ -62,7 +62,7 @@
     }
 }
 
-int main () {
+int main(int, char**) {
     test1<std::string_view> ();
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test1<std::u8string_view> ();
@@ -99,4 +99,6 @@
     test2 ( U"a", 1 );
     test2 ( U"", 0 );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.capacity/empty.fail.cpp b/libcxx/test/std/strings/string.view/string.view.capacity/empty.fail.cpp
index 74bd413..1dd1dcf 100644
--- a/libcxx/test/std/strings/string.view/string.view.capacity/empty.fail.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.capacity/empty.fail.cpp
@@ -20,8 +20,10 @@
 
 #include "test_macros.h"
 
-int main ()
+int main(int, char**)
 {
     std::string_view c;
     c.empty();  // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}}
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
index bb6c343..e771bd3 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs == lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -65,4 +65,6 @@
     static_assert (!("abcde0" == sv2), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
index bb142b0..d27d4c4 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs == lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,5 +46,7 @@
     test("abcdefghijklmnopqrst", S("abcdefghij"), false);
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
     }
+
+  return 0;
 }
 
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp
index d7b113c..259711e 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs == lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -58,4 +58,6 @@
     static_assert (!(sv1 == sv3), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
index 4f32425..5fa57eb 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs >= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -68,4 +68,6 @@
     static_assert (  "abcde0" >= sv2, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string.pass.cpp
index 9cbe389..dddaa39 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs >= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,4 +46,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghij", true, false);
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true, true);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp
index 81fee1f..d35bea5 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs >= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -61,4 +61,6 @@
     static_assert (  sv2 >= sv1,  "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
index c295645..80dcc7b 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs > lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -68,4 +68,6 @@
     static_assert (  "abcde0" > sv2, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string.pass.cpp
index b07b6a7..84c9478 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs > lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,4 +46,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghij", true, false);
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false, false);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp
index 984f2c6..ec31d5c 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs > lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -61,4 +61,6 @@
     static_assert (  sv2 > sv1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
index 81d0d16..4f58223 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs <= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -68,4 +68,6 @@
     static_assert (!("abcde0" <= sv2), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string.pass.cpp
index 3cdb021..80e8075 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs <= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,4 +46,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghij", false, true);
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true, true);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp
index 3ec0222..b1c1861 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs <= lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -61,4 +61,6 @@
     static_assert (!(sv2 <= sv1), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
index f8093c8..14bba2a 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs < lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -68,4 +68,6 @@
     static_assert (!("abcde0" < sv2), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string.pass.cpp
index e7341f1..f611bac 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs < lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,4 +46,6 @@
     test(S("abcdefghijklmnopqrst"), "abcdefghij", false, true);
     test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false, false);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp
index a7e51f9..f44e373 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs < lhs) == y);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -61,4 +61,6 @@
     static_assert (!(sv2 < sv1), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
index 1531626..6b8add8 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
@@ -27,7 +27,7 @@
     assert((rhs != lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -66,4 +66,6 @@
     static_assert (  "abcde0" != sv2, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string.pass.cpp
index 8e5539a..613eaf7 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string.pass.cpp
@@ -25,7 +25,7 @@
     assert((rhs != lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -46,4 +46,6 @@
     test("abcdefghijklmnopqrst", S("abcdefghij"), true);
     test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp
index 0e01e94..90d1533 100644
--- a/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp
@@ -26,7 +26,7 @@
     assert((rhs != lhs) == x);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -58,4 +58,6 @@
     static_assert (   sv1 != sv3,  "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
index 8247c53..b2bf8ed 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
@@ -29,7 +29,7 @@
     return sv0.size() == sv1.size() && sv0.data() == sv1.data();
     }
 
-int main () {
+int main(int, char**) {
 
     assert( test<std::string_view>    (  "1234"));
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -54,4 +54,6 @@
 #endif
     static_assert( test<std::wstring_view>   ({ L"abc", 3}), "");
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp
index fe1fa97..07a453b 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp
@@ -35,7 +35,7 @@
     }
 }
 
-int main () {
+int main(int, char**) {
     test<std::string_view> ();
     test<std::u16string_view> ();
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -44,4 +44,6 @@
     test<std::u32string_view> ();
     test<std::wstring_view> ();
 
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp
index 7430f4a..bcd83da 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp
@@ -39,7 +39,7 @@
     }
 
 
-int main () {
+int main(int, char**) {
 
     test ( "QBCDE" );
     test ( "A" );
@@ -65,4 +65,6 @@
     static_assert ( sv1.size() == 5, "");
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp
index 8ad0449..92ae675 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp
@@ -31,7 +31,7 @@
     }
 }
 
-int main () {
+int main(int, char**) {
 
     test ( "QBCDE", 5 );
     test ( "QBCDE", 2 );
@@ -82,4 +82,6 @@
     }
 #endif
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
index 5e4a2d3..2043d66 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
@@ -31,7 +31,7 @@
     assert ( sv1.data() == str.data());
 }
 
-int main () {
+int main(int, char**) {
 
     test ( std::string("QBCDE") );
     test ( std::string("") );
@@ -61,4 +61,6 @@
     test ( std::basic_string<char, dummy_char_traits>("") );
     test ( std::basic_string<char, dummy_char_traits>() );
 
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_string1.fail.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_string1.fail.cpp
index 3436006..3c464d7 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_string1.fail.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_string1.fail.cpp
@@ -18,7 +18,7 @@
 
 struct dummy_char_traits : public std::char_traits<char> {};
 
-int main () {
+int main(int, char**) {
     using string_view = std::basic_string_view<char>;
     using string      = std::              basic_string     <char, dummy_char_traits>;
 
@@ -28,4 +28,6 @@
     assert ( sv1.size() == s.size());
     assert ( sv1.data() == s.data());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_string2.fail.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_string2.fail.cpp
index 2a0544d..482d220 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_string2.fail.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_string2.fail.cpp
@@ -18,7 +18,7 @@
 
 struct dummy_char_traits : public std::char_traits<char> {};
 
-int main () {
+int main(int, char**) {
     using string_view = std::basic_string_view<char, dummy_char_traits>;
     using string      = std::              basic_string     <char>;
 
@@ -28,4 +28,6 @@
     assert ( sv1.size() == s.size());
     assert ( sv1.data() == s.data());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
index 3f1f562..b95dca6 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
@@ -26,7 +26,7 @@
 // (2)  basic_string_view(const basic_string_view&)
 // (3)  basic_string_view(const CharT*, size_type)
 // (4)  basic_string_view(const CharT*)
-int main()
+int main(int, char**)
 {
   { // Testing (1)
     // Nothing TODO. Cannot deduce without any arguments.
@@ -61,4 +61,6 @@
     ASSERT_SAME_TYPE(decltype(w), std::wstring_view);
     assert(w == L"abcdef");
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp
index 8898d11..82173a9 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp
@@ -35,7 +35,7 @@
         assert(0 <= x && x + 1 <= s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -81,4 +81,6 @@
     static_assert (sv2.find( 'c', 4 ) == SV::npos, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp
index aae4048..4566ada 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp
@@ -35,7 +35,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -81,4 +81,6 @@
     static_assert (sv2.find_first_not_of( 'q', 5 ) == SV::npos, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp
index 0020e60..17c3c52 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp
@@ -141,7 +141,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -162,4 +162,6 @@
     static_assert (sv2.find_first_not_of( "lecar", 0) == 1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp
index 52f0696..707a7a9 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp
@@ -366,7 +366,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -389,4 +389,6 @@
     static_assert (sv2.find_first_not_of( "lecar", 0, 5) == 1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp
index 9378c6a..37445b5 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp
@@ -137,11 +137,13 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
     test0<S>();
     test1<S>();
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp
index 6be6ddc..d4916be 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp
@@ -35,7 +35,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -79,4 +79,6 @@
     static_assert (sv2.find_first_of( 'e', 5 ) == SV::npos, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp
index bc3ea55..7e43109 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp
@@ -141,7 +141,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -162,4 +162,6 @@
     static_assert (sv2.find_first_of( "lecar", 0) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp
index cd97843..165fb23 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp
@@ -366,7 +366,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -389,4 +389,6 @@
     static_assert (sv2.find_first_of( "lecar", 0, 5) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp
index 545f4e5..c705f02 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp
@@ -137,11 +137,13 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
     test0<S>();
     test1<S>();
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp
index 8d80557..0b6e6cf 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp
@@ -35,7 +35,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -79,4 +79,6 @@
     static_assert (sv2.find_last_not_of( 'e', 5 ) == 3, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp
index f7daf3f..fe17b77 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp
@@ -141,7 +141,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -162,4 +162,6 @@
     static_assert (sv2.find_last_not_of( "lecar", 5) == 3, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp
index 8fd2553..11a5c27 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp
@@ -366,7 +366,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -389,4 +389,6 @@
     static_assert (sv2.find_last_not_of( "lecar", 5, 0) == 4, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp
index 06a31a1..e90e38c 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp
@@ -137,11 +137,13 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
     test0<S>();
     test1<S>();
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp
index 147e191..fdcf317 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp
@@ -35,7 +35,7 @@
         assert(x < s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -79,4 +79,6 @@
     static_assert (sv2.find_last_of( 'e', 5 ) == 4, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp
index 5a12718..640f483 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp
@@ -141,7 +141,7 @@
     test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -162,4 +162,6 @@
     static_assert (sv2.find_last_of( "lecar", 5) == 4, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp
index 9840298..e82c935 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp
@@ -366,7 +366,7 @@
     test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -389,4 +389,6 @@
     static_assert (sv2.find_last_of( "lecar", 5, 5) == 4, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp
index 84b5a96..02c1184 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp
@@ -137,11 +137,13 @@
     test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
     test0<S>();
     test1<S>();
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp
index 2be32a4..3f4fee5 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp
@@ -147,7 +147,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -168,4 +168,6 @@
     static_assert (sv2.find( "abcde", 1) == SV::npos, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp
index 0f7d295..74caa6f 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp
@@ -366,7 +366,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -390,4 +390,6 @@
     static_assert (sv2.find( "abcde", 0, 1 ) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp
index 0a5cec5..ed3b7c1 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -161,4 +161,6 @@
     static_assert (sv2.find(sv2, 1 ) == SV::npos, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp
index 62f50ed..959bb05 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp
@@ -34,7 +34,7 @@
         assert(x + 1 <= s.size());
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -80,4 +80,6 @@
     static_assert (sv2.rfind( 'b', 4 ) == 1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp
index 0ff2be5..6010083 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp
@@ -147,7 +147,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -168,4 +168,6 @@
     static_assert (sv2.rfind( "abcde", 1) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp
index 18fd843..c3ca97e 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp
@@ -365,7 +365,7 @@
     test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -389,4 +389,6 @@
     static_assert (sv2.rfind( "abcde", 0, 1 ) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp
index dfc4a83..c4ceef3 100644
--- a/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp
@@ -140,7 +140,7 @@
     test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0);
 }
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view S;
@@ -161,4 +161,6 @@
     static_assert (sv2.rfind(sv2, 1) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
index 21dcbdf..d52f163 100644
--- a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
@@ -17,7 +17,7 @@
 
 #include "poisoned_hash_helper.hpp"
 
-int main() {
+int main(int, char**) {
   test_library_hash_specializations_available();
   {
     test_hash_enabled_for_type<std::string_view>();
@@ -30,4 +30,6 @@
     test_hash_enabled_for_type<std::u32string_view>();
 #endif
   }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
index 7cb7754..0e296f2 100644
--- a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
@@ -55,7 +55,7 @@
     assert(sh(ss2) == h(s2));
 }
 
-int main()
+int main(int, char**)
 {
     test<std::string_view>();
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -66,4 +66,6 @@
     test<std::u32string_view>();
 #endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
     test<std::wstring_view>();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
index c721b2f..d4dcbdc 100644
--- a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
@@ -20,7 +20,7 @@
 using std::string_view;
 using std::wstring_view;
 
-int main()
+int main(int, char**)
 {
     {
         std::ostringstream out;
@@ -54,4 +54,6 @@
         assert(out.good());
         assert(L"   " + s == out.str());
     }
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
index 0926f7f..ba700c8 100644
--- a/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
@@ -39,7 +39,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     typedef std::string_view    string_view;
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -90,4 +90,6 @@
     static_assert (   *wsv.cbegin() ==   wsv[0], "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp
index 1287cc2..59c29e2 100644
--- a/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp
@@ -48,7 +48,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     typedef std::string_view    string_view;
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -99,4 +99,6 @@
     static_assert (   wsv.begin() !=   wsv.cend(), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
index 43d1906..a57d7b4 100644
--- a/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
@@ -40,7 +40,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     typedef std::string_view    string_view;
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -91,4 +91,6 @@
     static_assert (   *wsv.crbegin() ==   wsv[2], "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
index a4eed7d..e0db02c 100644
--- a/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
@@ -48,7 +48,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     typedef std::string_view    string_view;
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -99,4 +99,6 @@
     static_assert (   *--wsv.crend() ==   wsv[0], "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
index 08fe79e..2287ba6 100644
--- a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
@@ -47,7 +47,7 @@
 }
 #endif
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
     test ( "", 0 );
@@ -74,4 +74,6 @@
     static_assert ( test_ce ( 9, 3 ) == 6, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
index be9ca1e..0636bce 100644
--- a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
@@ -47,7 +47,7 @@
 }
 #endif
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
     test ( "", 0 );
@@ -74,4 +74,6 @@
     static_assert ( test_ce ( 9, 3 ) == 6, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
index 9b8eedd..2fc286e 100644
--- a/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
@@ -46,7 +46,7 @@
 #endif
 
 
-int main () {
+int main(int, char**) {
     test ( "ABCDE", 5 );
     test ( "a", 1 );
     test ( "", 0 );
@@ -72,4 +72,6 @@
     static_assert ( test_ce (0, 1) == 1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
index f335da9..ecc24ab 100644
--- a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
@@ -160,7 +160,7 @@
     return s;
 }
 
-int main()
+int main(int, char**)
 {
     round_trip    (  "" );
     round_trip_ws (  "" );
@@ -207,7 +207,11 @@
 
     assert ( unquote (  "" ) ==  "" ); // nothing there
     assert ( unquote ( L"" ) == L"" ); // nothing there
-    }
+
+    return 0;
+}
 #else
-int main() {}
+int main(int, char**) {
+  return 0;
+}
 #endif
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp
index e9a854b..0c04ce5 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp
@@ -32,7 +32,7 @@
     test1 ( sv1, s2, expected );
 }
 
-int main()
+int main(int, char**)
 {
     {
     test("", "", 0);
@@ -123,4 +123,6 @@
     static_assert ( sv2.compare("abcde") == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
index 6f45222..974e687 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
@@ -354,7 +354,7 @@
 }
 
 
-int main()
+int main(int, char**)
 {
     test0();
     test1();
@@ -449,4 +449,6 @@
     static_assert ( sv2.compare(0, 6, "abcde") == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp
index 452addc..73773fb 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp
@@ -354,7 +354,7 @@
 }
 
 
-int main () {
+int main(int, char**) {
     test0();
     test1();
     test2();
@@ -398,4 +398,6 @@
     static_assert ( sv1.compare(2, 4, sv2) == 1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
index d11f003..df4e739 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
@@ -1291,7 +1291,7 @@
     }
 
 
-int main () {
+int main(int, char**) {
     test0();
     test1();
     test2();
@@ -1349,4 +1349,6 @@
     static_assert ( sv2.compare(0, 0, "abcde", 1, 0) == 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
index 3f6e578..56b6ec1 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
@@ -5747,7 +5747,7 @@
 }
 
 
-int main () {
+int main(int, char**) {
     test0();
     test1();
     test2();
@@ -5844,4 +5844,6 @@
     static_assert ( sv1.compare(2, 4, "abcde", 3, 4) == -1, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp
index e65a745..9c27f26 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp
@@ -34,7 +34,7 @@
     test1(sv1, sv2, expected);
 }
 
-int main () {
+int main(int, char**) {
 
     test("",                     "", 0);
     test("",                     "abcde", -5);
@@ -118,4 +118,6 @@
     static_assert ( sv2.compare(sv3)  < 0, "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp
index 3ec48b0..e9665099 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp
@@ -77,7 +77,7 @@
 
 }
 
-int main () {
+int main(int, char**) {
     test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
     test ( "ABCDE");
     test ( "a" );
@@ -99,4 +99,6 @@
     test ( U"a" );
     test ( U"" );
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp
index 4391bb5..c2fd01f 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp
@@ -69,7 +69,7 @@
     test1(sv1, sv1.size() + 1, string_view_t::npos);
 }
 
-int main () {
+int main(int, char**) {
     test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
     test ( "ABCDE");
     test ( "a" );
@@ -117,4 +117,6 @@
     }
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp b/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp
index 3f07051..45edec7 100644
--- a/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp
@@ -8,4 +8,6 @@
 
 #include <string_view>
 
-int main () {}
+int main(int, char**) {
+  return 0;
+}
diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp
index c89fdb8e4e..c037330 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -43,4 +43,6 @@
     static_assert (!sv2.ends_with('x'), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp
index 4ef1c8e..64caf5c 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -100,4 +100,6 @@
     static_assert ( svNot.ends_with("def"), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp
index 2d115c1..b5f67f8 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -100,4 +100,6 @@
     static_assert ( svNot.ends_with(svNot), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.template/nothing_to_do.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/nothing_to_do.pass.cpp
index 3f07051..45edec7 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/nothing_to_do.pass.cpp
@@ -8,4 +8,6 @@
 
 #include <string_view>
 
-int main () {}
+int main(int, char**) {
+  return 0;
+}
diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp
index d35222b..d43944f 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -43,4 +43,6 @@
     static_assert (!sv2.starts_with('x'), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp
index a3ffde5..ce651ec 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -100,4 +100,6 @@
     static_assert ( svNot.starts_with("def"), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp
index 5a5adbd..3d184ba 100644
--- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp
@@ -17,7 +17,7 @@
 #include "test_macros.h"
 #include "constexpr_char_traits.hpp"
 
-int main()
+int main(int, char**)
 {
     {
     typedef std::string_view SV;
@@ -100,4 +100,6 @@
     static_assert ( svNot.starts_with(svNot), "" );
     }
 #endif
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp
index c7d0e05..a8a1dff 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp
@@ -23,7 +23,7 @@
     typedef std::string_view   u8string_view;
 #endif
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals::string_view_literals;
 
@@ -69,4 +69,6 @@
     static_assert(noexcept( L"ABC"sv), "");
     static_assert(noexcept( u"ABC"sv), "");
     static_assert(noexcept( U"ABC"sv), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal1.fail.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal1.fail.cpp
index 05e66bf..5bf108b 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal1.fail.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal1.fail.cpp
@@ -14,9 +14,11 @@
 #include <string_view>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using std::string_view;
 
     string_view foo  =   ""sv;  // should fail w/conversion operator not found
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal1.pass.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal1.pass.cpp
index 956d7d2..ba667e0 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal1.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal1.pass.cpp
@@ -15,10 +15,12 @@
 #include <string_view>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals;
 
     std::string_view foo  =   ""sv;
     assert(foo.length() == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal2.fail.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal2.fail.cpp
index 672201b..2287e1c 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal2.fail.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal2.fail.cpp
@@ -14,7 +14,9 @@
 #include <string_view>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     std::string_view foo  =   ""sv;  // should fail w/conversion operator not found
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal2.pass.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal2.pass.cpp
index 653738d..cb49280 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal2.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal2.pass.cpp
@@ -15,10 +15,12 @@
 #include <string_view>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std::literals::string_view_literals;
 
     std::string_view foo  =   ""sv;
     assert(foo.length() == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal3.pass.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal3.pass.cpp
index 814ec0c..710933d 100644
--- a/libcxx/test/std/strings/string.view/string_view.literals/literal3.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string_view.literals/literal3.pass.cpp
@@ -15,10 +15,12 @@
 #include <string_view>
 #include <cassert>
 
-int main()
+int main(int, char**)
 {
     using namespace std;
 
     string_view foo  =   ""sv;
     assert(foo.length() == 0);
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/traits_mismatch.fail.cpp b/libcxx/test/std/strings/string.view/traits_mismatch.fail.cpp
index 6a32051..5cf3fa9 100644
--- a/libcxx/test/std/strings/string.view/traits_mismatch.fail.cpp
+++ b/libcxx/test/std/strings/string.view/traits_mismatch.fail.cpp
@@ -11,7 +11,9 @@
 
 #include <string_view>
 
-int main()
+int main(int, char**)
 {
     std::basic_string_view<char, std::char_traits<wchar_t>> s;
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/string.view/types.pass.cpp b/libcxx/test/std/strings/string.view/types.pass.cpp
index d8bb0f7..d90f777 100644
--- a/libcxx/test/std/strings/string.view/types.pass.cpp
+++ b/libcxx/test/std/strings/string.view/types.pass.cpp
@@ -67,7 +67,7 @@
     static_assert((std::is_same<typename S::reverse_iterator, typename S::const_reverse_iterator>::value), "");
 }
 
-int main()
+int main(int, char**)
 {
     test<std::char_traits<char> >();
     test<std::char_traits<wchar_t> >();
@@ -76,4 +76,6 @@
 #endif
     static_assert((std::is_same<std::basic_string_view<char>::traits_type,
                                 std::char_traits<char> >::value), "");
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/strings.erasure/erase.pass.cpp b/libcxx/test/std/strings/strings.erasure/erase.pass.cpp
index 250fe94..5013300 100644
--- a/libcxx/test/std/strings/strings.erasure/erase.pass.cpp
+++ b/libcxx/test/std/strings/strings.erasure/erase.pass.cpp
@@ -67,9 +67,11 @@
     test0(S("aba"), opt('c'), S("aba"));
 }
 
-int main()
+int main(int, char**)
 {
     test<std::string>();
     test<std::basic_string<char, std::char_traits<char>, min_allocator<char>>> ();
     test<std::basic_string<char, std::char_traits<char>, test_allocator<char>>> ();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp b/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp
index 06b9cc2..5f2fb01 100644
--- a/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp
+++ b/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp
@@ -67,9 +67,11 @@
     test0(S("aba"), True,   S(""));
 }
 
-int main()
+int main(int, char**)
 {
     test<std::string>();
     test<std::basic_string<char, std::char_traits<char>, min_allocator<char>>> ();
     test<std::basic_string<char, std::char_traits<char>, test_allocator<char>>> ();
+
+  return 0;
 }
diff --git a/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp b/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp
index 02fe32e..779762e 100644
--- a/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp
+++ b/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp
@@ -7,6 +7,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-int main()
+int main(int, char**)
 {
+
+  return 0;
 }