On 18/02/20 14:04 +0100, Christophe Lyon wrote:
Hi,
On Mon, 17 Feb 2020 at 14:22, Jonathan Wakely <jwak...@redhat.com> wrote:
* include/std/type_traits (__is_standard_integer): New helper trait.
* include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
(cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
* include/std/version (__cpp_lib_integer_comparison_functions): Define.
* testsuite/20_util/integer_comparisons/1.cc: New test.
* testsuite/20_util/integer_comparisons/2.cc: New test.
* testsuite/20_util/integer_comparisons/equal.cc: New test.
* testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
* testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
* testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
* testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
* testsuite/20_util/integer_comparisons/in_range.cc: New test.
* testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
* testsuite/20_util/integer_comparisons/less.cc: New test.
* testsuite/20_util/integer_comparisons/less_equal.cc: New test.
* testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
* testsuite/20_util/integer_comparisons/less_neg.cc: New test.
* testsuite/20_util/integer_comparisons/not_equal.cc: New test.
* testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
Tested powerpc64le-linux, committed to master.
Some of these new tests fail on arm (and s390 according to gcc-testresults):
FAIL: 20_util/integer_comparisons/equal.cc execution test
FAIL: 20_util/integer_comparisons/greater_equal.cc execution test
FAIL: 20_util/integer_comparisons/less.cc execution test
FAIL: 20_util/integer_comparisons/less_equal.cc execution test
FAIL: 20_util/integer_comparisons/not_equal.cc execution test
The log says:
/libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc:64: void
test03(): Assertion '!std::cmp_equal(u, ul)' failed.
/libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc:70:
void test03(): Assertion '!std::cmp_greater_equal(u, ul)' failed.
/libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc:68: void
test03(): Assertion 'std::cmp_less(u, ul)' failed.
/libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc:71:
void test03(): Assertion '!std::cmp_less_equal(ul, u)' failed.
/libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc:65:
void test03(): Assertion 'std::cmp_not_equal(u, ul)' failed.
Fixed with this patch, committed to master.
commit ce7b39d0fc694e5ec80520b7cc76f91a5476d7db
Author: Jonathan Wakely <jwak...@redhat.com>
Date: Tue Feb 18 18:56:30 2020 +0000
libstdc++: Fix new tests that fail for ILP32 targets
* testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
assumption that long is wider than int.
* testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
* testsuite/20_util/integer_comparisons/less.cc: Likewise.
* testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
* testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
index 16d4e3bd65c..10ba39432be 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
@@ -56,7 +56,7 @@ test03()
VERIFY( !std::cmp_equal(ss, u) );
VERIFY( !std::cmp_equal(u, ss) );
- unsigned long ul = (unsigned long) -1;
+ unsigned long long ul = (unsigned long long) -1;
VERIFY( !std::cmp_equal(s, ul) );
VERIFY( !std::cmp_equal(ul, s) );
VERIFY( !std::cmp_equal(ss, ul) );
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
index 61f461b4056..f80c62f1274 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
@@ -62,7 +62,7 @@ test03()
VERIFY( std::cmp_greater_equal(u, ss) );
VERIFY( std::cmp_greater_equal(u, -2U) );
- unsigned long ul = (unsigned long) -1;
+ unsigned long long ul = (unsigned long long) -1;
VERIFY( !std::cmp_greater_equal(s, ul) );
VERIFY( std::cmp_greater_equal(ul, s) );
VERIFY( !std::cmp_greater_equal(ss, ul) );
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
index a35006fc2fb..b70f4917103 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
@@ -60,7 +60,7 @@ test03()
VERIFY( std::cmp_less(ss, u) );
VERIFY( !std::cmp_less(u, ss) );
- unsigned long ul = (unsigned long) -1;
+ unsigned long long ul = (unsigned long long) -1;
VERIFY( std::cmp_less(s, ul) );
VERIFY( !std::cmp_less(ul, s) );
VERIFY( std::cmp_less(ss, ul) );
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
index 7875802856c..b3a3ac8d2fa 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
@@ -62,7 +62,7 @@ test03()
VERIFY( !std::cmp_less_equal(u, ss) );
VERIFY( std::cmp_less_equal(-2U, u) );
- unsigned long ul = (unsigned long) -1;
+ unsigned long long ul = (unsigned long long) -1;
VERIFY( std::cmp_less_equal(s, ul) );
VERIFY( !std::cmp_less_equal(ul, s) );
VERIFY( std::cmp_less_equal(ss, ul) );
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
index 81cbb3f4921..97f6fe6cfc3 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
@@ -57,7 +57,7 @@ test03()
VERIFY( std::cmp_not_equal(ss, u) );
VERIFY( std::cmp_not_equal(u, ss) );
- unsigned long ul = (unsigned long) -1;
+ unsigned long long ul = (unsigned long long) -1;
VERIFY( std::cmp_not_equal(s, ul) );
VERIFY( std::cmp_not_equal(ul, s) );
VERIFY( std::cmp_not_equal(ss, ul) );