Hi All, The meaning of the testcase was changed by passing it -fwrapv. The reason for the test failures on some platform was because the test was testing some implementation defined behavior wrt INT_MIN in generic code.
Instead of using -fwrapv this just removes the border case from the test so all the values now have a defined semantic. It still relies on the handling of shifting a negative value right, but that wasn't changed with -fwrapv anyway. The -fwrapv case is being handled already by other testcases. Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/testsuite/ChangeLog: * gcc.dg/signbit-5.c: Remove -fwrapv and change INT_MIN to INT_MIN+1. --- diff --git a/gcc/testsuite/gcc.dg/signbit-5.c b/gcc/testsuite/gcc.dg/signbit-5.c index 2bca640f930b7d1799e995e86152a6d8d05ec2a0..e778f91ca33010029419b035cbb31eb742345c84 100644 --- a/gcc/testsuite/gcc.dg/signbit-5.c +++ b/gcc/testsuite/gcc.dg/signbit-5.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-O3 -fwrapv" } */ +/* { dg-options "-O3" } */ /* This test does not work when the truth type does not match vector type. */ /* { dg-additional-options "-march=armv8-a" { target aarch64_sve } } */ @@ -44,8 +44,8 @@ int main () TYPE a[N]; TYPE b[N]; - a[0] = INT_MIN; - b[0] = INT_MIN; + a[0] = INT_MIN+1; + b[0] = INT_MIN+1; for (int i = 1; i < N; ++i) { --
diff --git a/gcc/testsuite/gcc.dg/signbit-5.c b/gcc/testsuite/gcc.dg/signbit-5.c index 2bca640f930b7d1799e995e86152a6d8d05ec2a0..e778f91ca33010029419b035cbb31eb742345c84 100644 --- a/gcc/testsuite/gcc.dg/signbit-5.c +++ b/gcc/testsuite/gcc.dg/signbit-5.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-O3 -fwrapv" } */ +/* { dg-options "-O3" } */ /* This test does not work when the truth type does not match vector type. */ /* { dg-additional-options "-march=armv8-a" { target aarch64_sve } } */ @@ -44,8 +44,8 @@ int main () TYPE a[N]; TYPE b[N]; - a[0] = INT_MIN; - b[0] = INT_MIN; + a[0] = INT_MIN+1; + b[0] = INT_MIN+1; for (int i = 1; i < N; ++i) {