diff options
| author | JF Bastien <jfbastien@apple.com> | 2019-02-04 20:31:13 +0000 |
|---|---|---|
| committer | JF Bastien <jfbastien@apple.com> | 2019-02-04 20:31:13 +0000 |
| commit | 2df59c50688c122bbcae7467d3eaf862c3ea3088 (patch) | |
| tree | 29c9a3e1c54fe76a506ffecc0cc4d8fbaba5cb04 /libcxx/test/std/utilities/function.objects/func.wrap | |
| parent | 6fd4e7fe0258ff71fe759535236883ea9060587c (diff) | |
| download | bcm5719-llvm-2df59c50688c122bbcae7467d3eaf862c3ea3088.tar.gz bcm5719-llvm-2df59c50688c122bbcae7467d3eaf862c3ea3088.zip | |
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
Diffstat (limited to 'libcxx/test/std/utilities/function.objects/func.wrap')
36 files changed, 108 insertions, 36 deletions
diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp index 2ec1d53c56e..eb223b88e49 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp @@ -19,7 +19,9 @@ #include <functional> #include <type_traits> -int main() +int main(int, char**) { static_assert((std::is_base_of<std::exception, std::bad_function_call>::value), ""); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp index 6b6ee8a64a7..385919227e0 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp @@ -13,7 +13,9 @@ #include <functional> #include <type_traits> -int main() +int main(int, char**) { std::bad_function_call ex; + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.fail.cpp index 50fb4f19d5b..2a34eff92e2 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.fail.cpp @@ -18,7 +18,9 @@ struct S : public std::function<void()> { using function::function; }; -int main() { +int main(int, char**) { S f1( [](){} ); S f2(std::allocator_arg, std::allocator<int>{}, f1); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp index 8c50c284b42..70f68d2f49b 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp @@ -20,10 +20,12 @@ using Fn = std::function<void()>; struct S : public std::function<void()> { using function::function; }; -int main() { +int main(int, char**) { S s( [](){} ); S f1( s ); #if TEST_STD_VER <= 14 S f2(std::allocator_arg, std::allocator<int>{}, s); #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp index b6dbcab5301..ec25bdf7802 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp @@ -57,7 +57,7 @@ int A::count = 0; int g(int) {return 0;} int h(int) {return 1;} -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -132,4 +132,6 @@ int main() } assert(A::count == 0); assert(globalMemCounter.checkOutstandingNewEq(0)); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp index 1b55baa02e1..ab5eef37270 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp @@ -17,7 +17,7 @@ int g(int) {return 0;} -int main() +int main(int, char**) { { std::function<int(int)> f; @@ -25,4 +25,6 @@ int main() f = g; assert(f); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp index c32baebb51d..fe5d24806b7 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp @@ -60,7 +60,7 @@ struct LValueCallable { }; #endif -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -111,4 +111,6 @@ int main() static_assert(!std::is_constructible<Fn, RValueCallable>::value, ""); } #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp index abff663cb72..f70a2087cc2 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp @@ -63,7 +63,7 @@ struct LValueCallable { }; #endif -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -115,4 +115,6 @@ int main() static_assert(!std::is_assignable<Fn&, RValueCallable>::value, ""); } #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp index 1598486661c..21c2f216efe 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp @@ -58,6 +58,8 @@ void test_pr34298() } } -int main() { +int main(int, char**) { test_pr34298(); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_nullptr.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_nullptr.pass.cpp index 89b7876235e..ebea3d0aa95 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_nullptr.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_nullptr.pass.cpp @@ -239,8 +239,10 @@ void test_md() { test_imp<int MemData::*, int(MemData&)>(); } -int main() { +int main(int, char**) { test_func(); test_mf(); test_md(); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.fail.cpp index acbeb9f9c98..50a11fb8198 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.fail.cpp @@ -18,7 +18,9 @@ #include "min_allocator.h" -int main() +int main(int, char**) { std::function<int(int)> f(std::allocator_arg, std::allocator<int>()); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp index b048109e54b..3b37ce6ffdc 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp @@ -20,10 +20,12 @@ #include "min_allocator.h" -int main() +int main(int, char**) { { std::function<int(int)> f(std::allocator_arg, bare_allocator<int>()); assert(!f); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.fail.cpp index bddc9278719..c31c0a21f32 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.fail.cpp @@ -22,7 +22,9 @@ void foo(int) {} -int main() +int main(int, char**) { std::function<void(int)> f(std::allocator_arg, std::allocator<int>(), foo); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp index 4d49434f317..6fa0d6faeaf 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp @@ -106,7 +106,7 @@ void test_for_alloc(Alloc& alloc) { test_MemFunClass<int(MemFunClass::*)(int, int) const, int(MemFunClass&, int, int)>(alloc); } -int main() +int main(int, char**) { { bare_allocator<DummyClass> bare_alloc; @@ -126,4 +126,6 @@ int main() } #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.fail.cpp index b6703c0b7b9..621588f8156 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.fail.cpp @@ -21,9 +21,11 @@ #include "test_macros.h" -int main() +int main(int, char**) { typedef std::function<void(int)> F; F f1; F f2(std::allocator_arg, std::allocator<int>(), f1); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp index 39050e6f153..583ca162ebf 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp @@ -111,7 +111,7 @@ void test_for_alloc(Alloc& alloc) test_MemFunClass<int(MemFunClass::*)(int, int) const, int(MemFunClass&, int, int)>(alloc); } -int main() +int main(int, char**) { { bare_allocator<DummyClass> alloc; @@ -121,4 +121,6 @@ int main() non_default_test_allocator<DummyClass> alloc(42); test_for_alloc(alloc); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.fail.cpp index 32d19ebf704..52bc528fe59 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.fail.cpp @@ -20,7 +20,9 @@ #include "min_allocator.h" -int main() +int main(int, char**) { std::function<int(int)> f(std::allocator_arg, std::allocator<int>(), nullptr); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp index 6378a6cd9d3..653057f6ec9 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp @@ -20,8 +20,10 @@ #include "min_allocator.h" -int main() +int main(int, char**) { std::function<int(int)> f(std::allocator_arg, bare_allocator<int>(), nullptr); assert(!f); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.fail.cpp index 558b7814ced..643cad8f074 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.fail.cpp @@ -50,10 +50,12 @@ int A::count = 0; int g(int) { return 0; } -int main() +int main(int, char**) { { std::function<int(int)> f = A(); std::function<int(int)> f2(std::allocator_arg, std::allocator<A>(), std::move(f)); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp index 8f379e30305..064046d0b2d 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp @@ -54,7 +54,7 @@ int A::count = 0; int g(int) { return 0; } -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -105,4 +105,6 @@ int main() assert(f2.target<Ptr>()); assert(f.target<Ptr>()); // f is unchanged because the target is small } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp index df2a43aba9d..d7b11ae1bfd 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp @@ -48,7 +48,7 @@ int g(int) { return 0; } int g2(int, int) { return 2; } int g3(int, int, int) { return 3; } -int main() { +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { std::function<int(int)> f = A(); @@ -134,4 +134,6 @@ int main() { assert(f.target<int (*)(int)>() == 0); } #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp index 9f03ee7a1f9..dbbde5ce473 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp @@ -50,7 +50,7 @@ int A::count = 0; int g(int) {return 0;} -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -161,4 +161,6 @@ int main() LIBCPP_ASSERT(f.target<Ptr>()); // f is unchanged because the target is small } #endif // TEST_STD_VER >= 11 + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp index 06ea4e058d0..46c14ce368b 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp @@ -15,8 +15,10 @@ #include <functional> #include <cassert> -int main() +int main(int, char**) { std::function<int(int)> f; assert(!f); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/move_reentrant.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/move_reentrant.pass.cpp index 026cfc2d484..e15fbbaae54 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/move_reentrant.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/move_reentrant.pass.cpp @@ -33,7 +33,7 @@ struct A std::function<void()> A::global; bool A::cancel = false; -int main() +int main(int, char**) { A::global = A(); assert(A::global.target<A>()); @@ -42,4 +42,6 @@ int main() A::cancel = true; A::global = std::function<void()>(nullptr); assert(!A::global.target<A>()); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp index b685d53bfa0..d58e191c470 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp @@ -15,8 +15,10 @@ #include <functional> #include <cassert> -int main() +int main(int, char**) { std::function<int(int)> f(nullptr); assert(!f); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp index 7a8d3e380e2..ff81080ffda 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp @@ -46,7 +46,7 @@ int A::count = 0; int g(int) {return 0;} -int main() +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { @@ -68,4 +68,6 @@ int main() assert(globalMemCounter.checkOutstandingNewEq(0)); assert(f.target<int(*)(int)>() == 0); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign_reentrant.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign_reentrant.pass.cpp index c4006a7c9fd..def86085ddb 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign_reentrant.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign_reentrant.pass.cpp @@ -33,7 +33,7 @@ struct A std::function<void()> A::global; bool A::cancel = false; -int main() +int main(int, char**) { A::global = A(); assert(A::global.target<A>()); @@ -42,4 +42,6 @@ int main() A::cancel = true; A::global = nullptr; assert(!A::global.target<A>()); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp index 5f91e5c87d9..0f8e051d406 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp @@ -39,7 +39,9 @@ test_int_1() } } -int main() +int main(int, char**) { test_int_1(); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp index 7775cad6773..fb67a3abf4a 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp @@ -401,7 +401,7 @@ void test_int_2() } } -int main() +int main(int, char**) { test_void_0(); test_int_0(); @@ -409,4 +409,6 @@ int main() test_int_1(); test_void_2(); test_int_2(); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp index 5a6f503a284..8ddd1cd2b18 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp @@ -48,7 +48,7 @@ public: int A::count = 0; -int main() +int main(int, char**) { #if TEST_STD_VER <= 14 { @@ -60,4 +60,6 @@ int main() } assert(A::count == 0); #endif + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp index a75aee33048..93997a0b55f 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp @@ -57,7 +57,7 @@ int h(int) { return 1; } int g2(int, int) { return 2; } int g3(int, int, int) { return 3; } -int main() { +int main(int, char**) { assert(globalMemCounter.checkOutstandingNewEq(0)); { std::function<int(int)> f1 = A(1); @@ -189,4 +189,6 @@ int main() { } assert(globalMemCounter.checkOutstandingNewEq(0)); assert(A::count == 0); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp index c68a1ca8262..698a461c8f0 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp @@ -27,7 +27,7 @@ int g(int) {return 0;} -int main() +int main(int, char**) { { std::function<int(int)> f; @@ -37,4 +37,6 @@ int main() assert(f != nullptr); assert(nullptr != f); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp index 7b59b56d092..d5031ba06e7 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp @@ -55,7 +55,7 @@ int A::count = 0; int g(int) {return 0;} -int main() +int main(int, char**) { { std::function<int(int)> f = A(); @@ -89,4 +89,6 @@ int main() assert(f.target<int>() == nullptr); } assert(A::count == 0); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp index 52d07a45a50..d9c8fc48d75 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp @@ -47,7 +47,7 @@ int A::count = 0; int g(int) {return 0;} -int main() +int main(int, char**) { { std::function<int(int)> f = A(); @@ -57,4 +57,6 @@ int main() std::function<int(int)> f; assert(f.target_type() == typeid(void)); } + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp index 496dee8ae75..8083ad83ac0 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp @@ -98,10 +98,12 @@ void test_other_function () static_assert((!has_second_argument_type<F>::value), "" ); } -int main() +int main(int, char**) { test_nullary_function<std::function<int()>, int>(); test_unary_function <std::function<double(int)>, double, int>(); test_binary_function <std::function<double(int, char)>, double, int, char>(); test_other_function <std::function<double(int, char, double)>, double>(); + + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp index f77636c8475..1f764da05d6 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// -int main() +int main(int, char**) { + + return 0; } |

