From: YunQiang Su Date: Thu, 9 Nov 2023 09:21:41 +0000 (+0800) Subject: MIPS: Use -mnan value for -mabs if not specified X-Git-Tag: basepoints/gcc-15~4865 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=78bfc86bf28cb280fac4fe26726c024e6acfc71c;p=thirdparty%2Fgcc.git MIPS: Use -mnan value for -mabs if not specified On most hardware, FCSR.ABS2008 is set the value same with FCSR.NAN2008. Let's use this behaivor by default in GCC, aka gcc -mnan=2008 -c fabs.c will imply `-mabs=2008`. And of course, `gcc -mnan=2008 -mabs=legacy` can continue workable like previous. gcc/ChangeLog * config/mips/mips.cc(mips_option_override): Set mips_abs to 2008, if mips_abs is default and mips_nan is 2008. gcc/testsuite/ * gcc.target/mips/fabs-nan2008.c: New test. * gcc.target/mips/fabsf-nan2008.c: New test. --- diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index a304e1c56377..cbd7d9bb2846 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -20550,6 +20550,8 @@ mips_option_override (void) /* Set NaN and ABS defaults. */ if (mips_nan == MIPS_IEEE_754_DEFAULT && !ISA_HAS_IEEE_754_LEGACY) mips_nan = MIPS_IEEE_754_2008; + if (mips_abs == MIPS_IEEE_754_DEFAULT && mips_nan == MIPS_IEEE_754_2008) + mips_abs = MIPS_IEEE_754_2008; if (mips_abs == MIPS_IEEE_754_DEFAULT && !ISA_HAS_IEEE_754_LEGACY) mips_abs = MIPS_IEEE_754_2008; diff --git a/gcc/testsuite/gcc.target/mips/fabs-nan2008.c b/gcc/testsuite/gcc.target/mips/fabs-nan2008.c new file mode 100644 index 000000000000..9e2719bbf362 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/fabs-nan2008.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mnan=2008" } */ + +NOMIPS16 double +fabs_2008 (double d) +{ + return __builtin_fabs (d); +} + +/* { dg-final { scan-assembler "\tabs\\.d\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c b/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c new file mode 100644 index 000000000000..11c423429d6d --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mnan=2008" } */ + +NOMIPS16 float +fabsf_2008 (float f) +{ + return __builtin_fabsf (f); +} + +/* { dg-final { scan-assembler "\tabs\\.s\t" } } */