[cfe-dev] Unexpected check-libcxx failures on FreeBSD
Dimitry Andric via cfe-dev
cfe-dev at lists.llvm.org
Mon Oct 10 12:48:34 PDT 2016
Sorry for slacking off on this. I have now tested D25389, and the number of unexpected test failures is reduced by 20. :-)
The trivial_copy_move.pass.cpp tests already failed before D25389, and it does not influence them. They should be disabled on FreeBSD for now, indeed.
Thanks for the nice fix!
-Dimitry
> On 10 Oct 2016, at 06:59, Eric Fiselier <eric at efcs.ca> wrote:
>
>
>
> On Sat, Oct 8, 2016 at 7:44 AM, Krzysztof Parzyszek <kparzysz at codeaurora.org <mailto:kparzysz at codeaurora.org>> wrote:
> This patch works very well. The infinite cleverness delivers again! :)
>
> There are still some failures left in check-libcxx, but they seem unrelated, except one:
>
>
> That error is related, but it's not really a problem, the tests just need to be disabled for FreeBSD.
> The standard requires std::pair be a trivial type when its template argument types are, but as mentioned above
> implementing this is ABI breaking.
>
> /Eric
>
>
>
>
> /usr/bin/CC -o /w/bld/org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/Output/trivial_copy_move.pass.cpp.o -x c++ /w/src/llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp <http://llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp> -c -v -Werror=thread-safety -std=c++1z -nostdinc++ -include /w/src/llvm.org/projects/libcxx/test/support/nasty_macros.hpp <http://llvm.org/projects/libcxx/test/support/nasty_macros.hpp> -I/w/src/llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include> -I/w/src/llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support> -DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/w/src/llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env <http://llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env>" -DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/w/bld/org/projects/libcxx/test/filesystem/Output/dynamic_env" -DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/local/bin/python2.7 /w/src/llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py <http://llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py>" -c
>
>
> FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM 3.8.0)
> Target: x86_64-unknown-freebsd11.0
> Thread model: posix
> InstalledDir: /usr/bin
> "/usr/bin/c++" -cc1 -triple x86_64-unknown-freebsd11.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name trivial_copy_move.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -v -dwarf-column-info -debugger-tuning=gdb -coverage-file /w/bld/org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/Output/trivial_copy_move.pass.cpp.o -nostdinc++ -resource-dir /usr/bin/../lib/clang/3.8.0 -include /w/src/llvm.org/projects/libcxx/test/support/nasty_macros.hpp <http://llvm.org/projects/libcxx/test/support/nasty_macros.hpp> -I /w/src/llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include> -I /w/src/llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support> -D LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=/w/src/llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env <http://llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env> -D LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=/w/bld/org/projects/libcxx/test/filesystem/Output/dynamic_env -D LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=/usr/local/bin/python2.7 /w/src/llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py <http://llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py> -Werror=thread-safety -std=c++1z -fdeprecated-macro -fdebug-compilation-dir /w/src/llvm.org <http://llvm.org/> -ferror-limit 19 -fmessage-length 210 -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /w/bld/org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/Output/trivial_copy_move.pass.cpp.o -x c++ /w/src/llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp <http://llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp>
> clang -cc1 version 3.8.0 based upon LLVM 3.8.0 default target x86_64-unknown-freebsd11.0
> #include "..." search starts here:
> #include <...> search starts here:
> /w/src/llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include>
> /w/src/llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support>
> /usr/bin/../lib/clang/3.8.0/include
> /usr/include
> End of search list.
> /w/src/llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:35:9 <http://llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:35:9>: error: static_assert failed ""
> static_assert(std::is_trivially_copy_constructible<P>::value, "");
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:40:9 <http://llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:40:9>: error: static_assert failed ""
> static_assert(std::is_trivially_move_constructible<P>::value, "");
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:47:9 <http://llvm.org/projects/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp:47:9>: error: static_assert failed ""
> static_assert(std::is_trivially_move_constructible<P1>::value, "");
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 3 errors generated.
>
>
>
> -Krzysztof
>
>
>
>
> On 10/7/2016 9:31 PM, Eric Fiselier wrote:
> In my infinite cleverness I think I found a solution which gives both
> constexpr and non-trivial constructors.
>
> Please take a look at https://reviews.llvm.org/D25389 <https://reviews.llvm.org/D25389>.
>
> /Eric
>
> On Fri, Oct 7, 2016 at 8:11 PM, Eric Fiselier <eric at efcs.ca <mailto:eric at efcs.ca>
> <mailto:eric at efcs.ca <mailto:eric at efcs.ca>>> wrote:
>
> On second thought applying (A) might be ill-advised. Most of the
> pair tests still fail after applying it in constructs like
> "std::is_copy_constructible_v<std::pair<NonCopyable, int&&>>",
> except now instead of returning the wrong answer the traits cause
> hard compile errors and template barf.
>
> @Ed, David, and Dimitry The FreeBSD std::pair implementation is
> fundamentally broken, and there's not much I think I can do about
> it. Is there a timeline for making the ABI change in FreeBSD?
>
> /Eric
>
> On Fri, Oct 7, 2016 at 7:59 PM, Eric Fiselier <eric at efcs.ca <mailto:eric at efcs.ca>
> <mailto:eric at efcs.ca <mailto:eric at efcs.ca>>> wrote:
>
> > Does anyone know what the problem may be?
>
> FreeBSD ships std::pair with explicitly defined copy and move
> constructors as opposed to explicitly defaulted ones. Mistakenly
> these constructors have not been marked constexpr in C++14.
> FreeBSD provides these old constructors is because switching to
> defaulted copy/move constructors is an ABI break because it
> makes std::pair non-trivial and changes how it's passed to
> functions according to the Itanium ABI.
>
> Fixing this requires either (A) marking the fallback
> constructors constexpr in C++14, or (B) convincing FreeBSD to
> take the ABI break.
>
> The easiest and simplistic fix is (A). However my concern with
> (A) is that the fallback constructors don't SFINAE away if they
> are ill-formed. This means that applying constexpr to them could
> break existing code by causing the eager instantiation of the
> ill-formed constructors, instantiations that would not occur if
> the constructors were non-constexpr. For this reason I think fix
> (B) is more correct, and greatly preferable.
>
> Since we have plenty of time until the next release I'll go
> ahead and commit (A) for now, keeping my ear to the ground for
> breakage.
>
> /Eric
>
>
> On Fri, Oct 7, 2016 at 7:23 PM, Krzysztof Parzyszek via cfe-dev
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org> <mailto:cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>>> wrote:
>
> I'm running this on FreeBSD 11 (stable). It has clang-3.8.0
> as the system compiler. LLVM/Clang/et al. compiled without
> problems, but I'm seeing failures in check-libcxx. Example
> below.
>
> Does anyone know what the problem may be?
>
>
> clang version 4.0.0 (http://llvm.org/git/clang.git <http://llvm.org/git/clang.git>
> a85c03256cfc0812e268f5e0f1b804910e75e673)
> (http://llvm.org/git/llvm.git <http://llvm.org/git/llvm.git>
> c95d4ff692323bde64fc8ef45e174b19450779af)
> Target: x86_64-unknown-freebsd11.0
> Thread model: posix
> InstalledDir: /w/c/org/bin
> "/w/c/org/bin/clang-4.0" -cc1 -triple
> x86_64-unknown-freebsd11.0 -emit-obj -mrelax-all
> -disable-free -main-file-name minmax_init_list_comp.pass.cpp
> -mrelocation-model static -mthread-model posix
> -mdisable-fp-elim -masm-verbose -mconstructor-aliases
> -munwind-tables -target-cpu x86-64 -v -v -dwarf-column-info
> -debugger-tuning=gdb -coverage-notes-file
> /w/bld/org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/Output/minmax_init_list_comp.pass.cpp.gcno
> -nostdinc++ -resource-dir /w/c/org/bin/../lib/clang/4.0.0
> -include
> /w/src/llvm.org/projects/libcxx/test/support/nasty_macros.hpp <http://llvm.org/projects/libcxx/test/support/nasty_macros.hpp> <http://llvm.org/projects/libcxx/test/support/nasty_macros.hpp <http://llvm.org/projects/libcxx/test/support/nasty_macros.hpp>>
> -I /w/src/llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include>
> <http://llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include>> -I
> /w/src/llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support>
> <http://llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support>> -D
> LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=/w/src/llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env <http://llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env>
> <http://llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env <http://llvm.org/projects/libcxx/test/std/experimental/filesystem/Inputs/static_test_env>>
> -D
> LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=/w/bld/org/projects/libcxx/test/filesystem/Output/dynamic_env
> -D
> LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=/usr/local/bin/python2.7
> /w/src/llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py <http://llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py>
> <http://llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py <http://llvm.org/projects/libcxx/test/support/filesystem_dynamic_test_helper.py>>
> -Werror=thread-safety -std=c++1z -fdeprecated-macro
> -fdebug-compilation-dir /w/src/llvm.org <http://llvm.org/> <http://llvm.org <http://llvm.org/>>
> -ferror-limit 19 -fmessage-length 210 -fobjc-runtime=gnustep
> -fcxx-exceptions -fexceptions -fdiagnostics-show-option
> -fcolor-diagnostics -o
> /w/bld/org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/Output/minmax_init_list_comp.pass.cpp.o
> -x c++
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp>>
> clang -cc1 version 4.0.0 based upon LLVM 4.0.0svn default
> target x86_64-unknown-freebsd11.0
> #include "..." search starts here:
> #include <...> search starts here:
> /w/src/llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include>
> <http://llvm.org/projects/libcxx/include <http://llvm.org/projects/libcxx/include>>
> /w/src/llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support>
> <http://llvm.org/projects/libcxx/test/support <http://llvm.org/projects/libcxx/test/support>>
> /w/c/org/bin/../lib/clang/4.0.0/include
> /usr/include
> End of search list.
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({1, 2, 3},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:68:20>>:
> note: in call to 'minmax({&{1, 2, 3}[0], 3}, {{}})'
> static_assert((std::minmax({1, 2, 3},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({1, 3, 2},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:69:20>>:
> note: in call to 'minmax({&{1, 3, 2}[0], 3}, {{}})'
> static_assert((std::minmax({1, 3, 2},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({2, 1, 3},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:70:20>>:
> note: in call to 'minmax({&{2, 1, 3}[0], 3}, {{}})'
> static_assert((std::minmax({2, 1, 3},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({2, 3, 1},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:71:20>>:
> note: in call to 'minmax({&{2, 3, 1}[0], 3}, {{}})'
> static_assert((std::minmax({2, 3, 1},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({3, 1, 2},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:72:20>>:
> note: in call to 'minmax({&{3, 1, 2}[0], 3}, {{}})'
> static_assert((std::minmax({3, 1, 2},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:19>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:19 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:19>>:
> error: static_assert expression is not an integral constant
> expression
> static_assert((std::minmax({3, 2, 1},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /w/src/llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>
> <http://llvm.org/projects/libcxx/include/algorithm:2823:12 <http://llvm.org/projects/libcxx/include/algorithm:2823:12>>:
> note: non-constexpr constructor 'pair' cannot be used in a
> constant expression
> return __result;
> ^
> /w/src/llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:20>
> <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:20 <http://llvm.org/projects/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp:73:20>>:
> note: in call to 'minmax({&{3, 2, 1}[0], 3}, {{}})'
> static_assert((std::minmax({3, 2, 1},
> std::greater<int>()) == std::pair<int, int>(3, 1)), "");
> ^
> /w/src/llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>
> <http://llvm.org/projects/libcxx/include/utility:316:5 <http://llvm.org/projects/libcxx/include/utility:316:5>>:
> note: declared here
> pair(pair&& __p)
> _NOEXCEPT_(is_nothrow_move_constructible<first_type>::value &&
> ^
> 6 errors generated.
>
>
> -Krzysztof
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org> <mailto:cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20161010/4a6ca338/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20161010/4a6ca338/attachment.sig>
More information about the cfe-dev
mailing list