History log of /ndk/sources/cxx-stl/llvm-libc++/libcxx/test/containers/Emplaceable.h
Revision Date Author Comments
4a6fe28b54934bead656146e2571f64f4530be5b 28-Feb-2014 Andrew Hsieh <andrewhsieh@google.com> More fix for libc++ testing

1. weaken all long double math in math_support.c for armeabi-v7a-hard
which link with -lm_hard from API19 already contains all
2. Define Emplaceable(const Emplaceable&) and MoveOnly(const MoveOnly&)
for gcc4.8
3. Fixed test pointer.pass.cpp because for reason not well-understood
%p on null produces "0" in libc++
4. Define -UNDEBUG because some test use assert() which tunrs into nothing
if NDEBUG is defined (eg. in ndk-build system for release build)
5. Avoid duplicate testing by skipping test path with EQ. Note that previous
commit 1b97ee35bafeb02b7c1feabc3a99b6d004637ddc creates symlink for tests
whose path containing '='
6. Sort the *.cpp.list and directory to make test report consistent across run
7. Re-try up to 10 times if run fails due to "Text file busy". This significantly
reduce false-alarm when running on emulator

Change-Id: Ia6964442095f2e7457a02c524115ad3db0887c4d
29d9f88ef5a33cd65b4b9977aed628bc195facf3 24-Feb-2014 Andrew Hsieh <andrewhsieh@google.com> Misc fixes in libc++ for gcc4.8

1. Simplified __gxx__cxx_access_control_sfinae and __gxx__cxx_rtti
otherwise g++ complains no operand after '!' if
_LIBCPP_HAS_NO_TRAILING_RETURN isn't defined, for example
2. Make public "MoveOnly(const MoveOnly&);" and "Emplaceable(const Emplaceable&);"
in tests headers for gcc4.8 which complains both are private for
16 tests in containers/associative/*map* and containers/unord/unord.*map/
3. Fixed float_h_pass.cpp about missing FLT_EVAL_METHOD and DECIMAL_DIG, where
gcc does define but with leading and trailing "__".
4. Fixed stdbool_h.pass.cpp about pre-defined bool/true/false

After this CL, testing result for gcc4.8 is comparable to clang3.4
except in the following area:

1. 42 fails in atomics/ because gcc4.8 doesn't support _Atomic
2. 4 fails on "no matching function for call to 'Deleter::Deleter(Deleter)'"
utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.pass.cpp
utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.pass.cpp
utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.pass.cpp
utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.pass.cpp
.../include/c++/4.8/type_traits:845:87: error: no matching function for call to 'Deleter::Deleter(Deleter)'
sizeof(__is_convertible_imp::__test<_T2>(__is_convertible_imp::__source<_T1>())) == 1
3. 3 fails on "use of deleted function"
thread/futures/futures.async/async.pass.cpp
utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp
utilities/utility/pairs/pairs.spec/make_pair.pass.cpp
.../include/c++/4.8/type_traits:845:87: error:
use of deleted function 'constexpr std::__1::unique_ptr<int>::unique_ptr(const std::__1::unique_ptr<int>&)'
sizeof(__is_convertible_imp::__test<_T2>(__is_convertible_imp::__source<_T1>())) == 1

4. 16 fails on static_assert() for various reasons
thread/futures/futures.overview/launch.pass.cpp
utilities/meta/meta.rel/is_convertible.pass.cpp
utilities/meta/meta.trans/meta.trans.other/underlying_type.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_nothrow_assignable.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_constructible.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_constructible.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivialially_copyable.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp
utilities/meta/meta.unary/meta.unary.prop/is_trivial.pass.cpp
utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp

5. 4 fails with -O2 (-O0 works; clang3.4 works fine in both -O2 and -O0)
containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp
I/DEBUG ( 51): Abort message: 'insert_after_range.pass.cpp:37: int main(): assertion "distance(c.begin(), c.end()) == 3" failed'
containers/sequences/list/list.ops/merge_comp.pass.cpp
I/DEBUG ( 51): Abort message: 'merge_comp.pass.cpp:29: int main(): assertion "c1 == std::list<int>(a3, a3+sizeof(a3)/sizeof(a3[0]))" failed'
containers/sequences/list/list.ops/merge.pass.cpp
I/DEBUG ( 51): Abort message: 'merge.pass.cpp:28: int main(): assertion "c1 == std::list<int>(a3, a3+sizeof(a3)/sizeof(a3[0]))" failed'
iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/lv_value.pass.cpp
I/DEBUG ( 51): Abort message: 'lv_value.pass.cpp:28: void test(C) [with C = std::__1::list<Copyable>]: assertion "c.front() == v" failed'

Change-Id: Iae14f979580bf236fc58de09b57a560a1d159205
5de42e6621b3d0131472c3f8838b7f0ccf3e8963 22-Oct-2013 Andrew Hsieh <andrewhsieh@google.com> Update libc++ to upstream revision r201101

To catch fixes since last update (r186119) which fails clang3.4
on containers/associative/map/map.modifiers/emplace_hint.pass.cpp
with error reads:

.../tuple:320:11: error:
rvalue reference to type 'double' cannot bind to lvalue of type 'double'
: value(__t.get())
^ ~~~~~~~~~
.../tuple:444:8: note:
in instantiation of member function 'std::__1::__tuple_leaf<1, double &&, false>::__tuple_leaf' requested here
struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
^
emplace_hint.pass.cpp:69:42: note: in instantiation of function template specialization 'std::__1::forward_as_tuple<int, double>' requested
here
std::forward_as_tuple(2, 3.5));
^

Now clang3.4 test results are same as clang3.3

### clang3.4 armeabi-v7a
...
Target: armv5te-none-linux-androideabi
Thread model: posix
with -std=c++11 -O0 -g -march=armv7-a -mthumb -mfpu=vfpv3-d16 -march=armv7-a -mthumb -Wl,--fix-cortex-a8 -I/usr/local/google/home/andrewhsieh/mydroid/ndk/sources/cxx-stl/llvm-libc++/libcxx/test/support -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
...
number of tests failed : 123
number of tests passed : 4522
+ ----
total number of tests : 4645

### clang3.4 x86
...
using clang version 3.4 (https://bitbucket.org/loganchien/clang c34bb12af3af42f671296cdb978b34b931062d2a) (https://bitbucket.org/loganchien/llvm d09f2eff406d17c86d51db7660bd374cf092e6ed)
Target: i686-none-linux-android
Thread model: posix
with -std=c++11 -O0 -g -I/usr/local/google/home/andrewhsieh/mydroid/ndk/sources/cxx-stl/llvm-libc++/libcxx/test/support -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
...
number of tests failed : 125
number of tests passed : 4520
+ ----
total number of tests : 4645

### clang3.4 mips
...
Target: mipsel-none-linux-android
Thread model: posix
with -std=c++11 -O0 -g -I/usr/local/google/home/andrewhsieh/mydroid/ndk/sources/cxx-stl/llvm-libc++/libcxx/test/support -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
...
number of tests failed : 122
number of tests passed : 4523
+ ----
total number of tests : 4645

Change-Id: I3a0aa734b9f07abf15774bfe1d687d9de5e3a4a9
a8bf9de8057ad254cc642f33bd7d0a48dc1ae55c 02-May-2013 David 'Digit' Turner <digit@android.com> Update libc++ sources to @180916

This patches updates the llvm libc++ in the following way:

1/ Move all llvm-specific sources from .../llvm-libc++/ to
.../llvm-libc++/libcxx/

2/ Move .../android/README to .../README.NDK and update it
with upstream/patch information.

3/ Add .../patches.android containing the list of Android-specific
patches used to generate the content of libcxx/ after checking
out the upstream version of the sources.

4/ Move .../android/llvm/libc++/Android.mk to .../Android.mk

5/ Move .../include/support/android/ to .../android/support/include/
and .../src/support/android/ to .../android/support/src/

It's likely that this will go into another helper static
library at some point, since it provides missing C library
functions that could benefit other programs.

This move makes updating the support code easier since it
doesn't require changing the content of patches.android/
each time.

Apart from that, there is no drastic change here in features / bugs,
the test program still links but the library probably doesn't do
much and will crash easily.

Change-Id: I953cc528ba3d0199b5947ef3dbdcbfedfb25f3e8