https://gcc.gnu.org/g:d3c8cb96e4e2a04dc3765467fc609a12ca6e6e25
commit d3c8cb96e4e2a04dc3765467fc609a12ca6e6e25 Author: Jeff Law <j...@ventanamicro.com> Date: Thu May 2 08:42:32 2024 -0600 [committed] [RISC-V] Don't run new rounding tests on newlib risc-v targets The new round_32.c and round_64.c tests depend on the optimizers to recognize the conversions feeding the floor/ceil calls and convert them into ceilf, floorf and the like. Those transformations only occur when the target indicates the C library has the appropriate routines (fnclass == function_c99_misc). While newlib has these routines, they are not exposed as available to the compiler and thus the transformation the tests depend on do not happen. Naturally the scan-tests then fail. gcc/testsuite * gcc.target/riscv/round_32.c: Add require-effective-target glibc. * gcc.target/riscv/round_64.c: Likewise. (cherry picked from commit 1e29da0b6508b23a7a6b14a7fb643b917a195003) Diff: --- gcc/testsuite/gcc.target/riscv/round_32.c | 1 + gcc/testsuite/gcc.target/riscv/round_64.c | 1 + 2 files changed, 2 insertions(+) diff --git a/gcc/testsuite/gcc.target/riscv/round_32.c b/gcc/testsuite/gcc.target/riscv/round_32.c index f9fea70ad55..88ff77aff2e 100644 --- a/gcc/testsuite/gcc.target/riscv/round_32.c +++ b/gcc/testsuite/gcc.target/riscv/round_32.c @@ -1,4 +1,5 @@ /* { dg-do compile { target { riscv32*-*-* } } } */ +/* { dg-require-effective-target glibc } */ /* { dg-options "-march=rv32gc -mabi=ilp32d -fno-math-errno -funsafe-math-optimizations -fno-inline" } */ /* { dg-skip-if "" { *-*-* } { "-O0" "-Og" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/round_64.c b/gcc/testsuite/gcc.target/riscv/round_64.c index e79690979a5..5e13bccdcd2 100644 --- a/gcc/testsuite/gcc.target/riscv/round_64.c +++ b/gcc/testsuite/gcc.target/riscv/round_64.c @@ -1,4 +1,5 @@ /* { dg-do compile { target { riscv64*-*-* } } } */ +/* { dg-require-effective-target glibc } */ /* { dg-options "-march=rv64gc -mabi=lp64d -fno-math-errno -funsafe-math-optimizations -fno-inline" } */ /* { dg-skip-if "" { *-*-* } { "-O0" "-Og" } } */