> -----Original Message-----
> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
> ow...@gcc.gnu.org] On Behalf Of Andrew Bennett
> Sent: 03 November 2016 11:33
> To: Matthew Fortune; 'Moore, Catherine'; 'gcc-patches@gcc.gnu.org'
> Subject: RE: [PATCH] MIPS: If a test in the MIPS testsuite requires standard
> library support check the sysroot supports the required test options.
> 
> Ping.
> 
> 
> Regards,
> 
> 
> 
> Andrew
> 

Hi Andrew,

I believe the inline-memcpy-{1,2,3,4,5}.c tests also qualify for the
(REQUIRES_STDLIB) option.

Regards,
Toma Tabacu

> > -----Original Message-----
> > From: Andrew Bennett
> > Sent: 28 August 2015 16:50
> > To: Matthew Fortune; Moore, Catherine; gcc-patches@gcc.gnu.org
> > Subject: RE: [PATCH] MIPS: If a test in the MIPS testsuite requires
> > standard library support check the sysroot supports the required test
> options.
> >
> > > I had some comments on this that I hadn't got round to posting. The
> > > fix in this patch is not general enough as the missing header
> > > problem comes in two (related) forms:
> > >
> > > 1) Using the new MTI and IMG sysroot layout we can end up with GCC
> looking
> > >    for headers in a sysroot that simply does not exist. The current patch
> > >    handles this.
> > > 2) Using any sysroot layout (i.e. a simple mips-linux-gnu) it is possible
> > >    for the stdlib.h header to be found but the ABI dependent gnu-stubs
> > >    header may not be installed depending on soft/hard nan1985/nan2008.
> > >
> > > The test for stdlib.h needs to therefore verify that preprocessing
> > > succeeds rather than just testing for an error relating to stdlib.h.
> > > This could be done by adding a further option to mips_preprocess to
> > > indicate the processor output should go to a file and that the
> > > caller wants the messages emitted by the compiler instead.
> > >
> > > A second issue is that you have added (REQUIRES_STDLIB) to too many
> tests.
> > > You only need to add it to tests that request a compiler option (via
> > > dg-options) that could potentially lead to forcing soft/hard
> > > nan1985/nan2008 directly or indirectly. So -mips32r6 implies nan2008
> > > so you need it -
> > mips32r5
> > > implies nan1985 so you need it. There are at least two tests which
> > > don't need the option but you need to check them all so we don't run
> > > the check needlessly.
> >
> > The updated patch and ChangeLog that addresses Matthew's comments is
> below.
> >
> > Ok to commit?
> >
> > Regards,
> >
> >
> > Andrew
> >
> >
> > testsuite/
> >
> >     * gcc.target/mips/loongson-simd.c (dg-options): Add
> >     (REQUIRES_STDLIB).
> >     * gcc.target/mips/loongson-shift-count-truncated-1.c: Ditto
> >     * gcc.target/mips/mips-3d-1.c: Ditto
> >     * gcc.target/mips/mips-3d-2.c: Ditto
> >     * gcc.target/mips/mips-3d-3.c: Ditto
> >     * gcc.target/mips/mips-3d-4.c: Ditto
> >     * gcc.target/mips/mips-3d-5.c: Ditto
> >     * gcc.target/mips/mips-3d-6.c: Ditto
> >     * gcc.target/mips/mips-3d-7.c: Ditto
> >     * gcc.target/mips/mips-3d-8.c: Ditto
> >     * gcc.target/mips/mips-3d-9.c: Ditto
> >     * gcc.target/mips/mips-ps-1.c: Ditto
> >     * gcc.target/mips/mips-ps-2.c: Ditto
> >     * gcc.target/mips/mips-ps-3.c: Ditto
> >     * gcc.target/mips/mips-ps-4.c: Ditto
> >     * gcc.target/mips/mips-ps-6.c: Ditto
> >     * gcc.target/mips/mips16-attributes.c: Ditto
> >     * gcc.target/mips/mips32-dsp-run.c: Ditto
> >     * gcc.target/mips/mips32-dsp.c: Ditto
> >     * gcc.target/mips/save-restore-1.c: Ditto
> >     * gcc.target/mips/mips.exp (mips_option_groups): Add stdlib.
> >     (mips_preprocess): Add ignore_output argument that when set
> >     will not return the pre-processed output.
> >     (mips_arch_info): Update arguments for the call to
> >     mips_preprocess.
> >     (mips-dg-init): Ditto.
> >     (mips-dg-options): Check if a test having test option
> >     (REQUIRES_STDLIB) has the required sysroot support for
> >     the current test options.
> >
> >
> >
> > diff --git
> > a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
> > b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
> > index f57a18c..baed48c 100644
> > --- a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
> > +++ b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
> > @@ -4,7 +4,7 @@
> >  /* loongson.h does not handle or check for MIPS16ness.  There doesn't
> >     seem any good reason for it to, given that the Loongson processors
> >     do not support MIPS16.  */
> > -/* { dg-options "isa=loongson -mhard-float -mno-mips16" } */
> > +/* { dg-options "isa=loongson -mhard-float -mno-mips16
> > +(REQUIRES_STDLIB)" }
> > */
> >  /* See PR 52155.  */
> >  /* { dg-options "isa=loongson -mhard-float -mno-mips16 -mlong64" {
> > mips*-*-
> > elf* && ilp32 } } */
> >
> > diff --git a/gcc/testsuite/gcc.target/mips/loongson-simd.c
> > b/gcc/testsuite/gcc.target/mips/loongson-simd.c
> > index 6d2ceb6..f263b43 100644
> > --- a/gcc/testsuite/gcc.target/mips/loongson-simd.c
> > +++ b/gcc/testsuite/gcc.target/mips/loongson-simd.c
> > @@ -26,7 +26,7 @@ along with GCC; see the file COPYING3.  If not see
> >     because inclusion of some system headers e.g. stdint.h will fail
> > due to not
> >     finding stubs-o32_hard.h.  */
> >  /* { dg-require-effective-target mips_nanlegacy } */
> > -/* { dg-options "isa=loongson -mhard-float -mno-micromips -mno-mips16
> > -flax- vector-conversions" } */
> > +/* { dg-options "isa=loongson -mhard-float -mno-micromips -mno-mips16
> > +-flax-
> > vector-conversions (REQUIRES_STDLIB)" } */
> >
> >  #include "loongson.h"
> >  #include <stdio.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-1.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
> > index f11ffc5..3a3318d 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-1.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D builtin functions */
> >  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-2.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
> > index b04c3bf..3464ed4 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-2.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D branch-if-any-two builtin functions */  #include
> > <stdlib.h> diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-3.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
> > index e4de8fb..1051afd 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-3.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D absolute compare builtin functions */  #include
> > <stdlib.h> diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-4.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
> > index 3d28d7f..f898346 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-4.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D branch-if-any-four builtin functions */  #include
> > <stdlib.h> diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-5.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
> > index a433675..21638f1 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-5.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D absolute-compare & branch-if-any-four builtin
> > functions */  #include <stdlib.h> diff --git
> > a/gcc/testsuite/gcc.target/mips/mips-3d-6.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
> > index e6b44f0..2b2417c 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-6.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D absolute compare (floats) builtin functions */
> > #include <stdlib.h> diff --git
> > a/gcc/testsuite/gcc.target/mips/mips-3d-7.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
> > index 2531ddf..0370bfb 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-7.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D absolute compare (doubles) builtin functions */
> > #include <stdlib.h> diff --git
> > a/gcc/testsuite/gcc.target/mips/mips-3d-8.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
> > index 1d199d7..8780f0b 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-8.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS-3D absolute compare and conditional move builtin
> > functions */  #include <stdlib.h> diff --git
> > a/gcc/testsuite/gcc.target/mips/mips-3d-9.c
> > b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
> > index d697efd..021a404 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-3d-9.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mips3d" } */
> > +/* { dg-options "-mips3d (REQUIRES_STDLIB)" } */
> >
> >  /* Matrix Multiplications */
> >  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-1.c
> > b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
> > index 73598a8..fcd9448 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-ps-1.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mpaired-single" } */
> > +/* { dg-options "-mpaired-single (REQUIRES_STDLIB)" } */
> >
> >  /* Test v2sf calculations */
> >  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-2.c
> > b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
> > index 5264255..85cf29e 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-ps-2.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mpaired-single" } */
> > +/* { dg-options "-mpaired-single (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS paired-single builtin functions */  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-3.c
> > b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
> > index 7e6ffd0..e498a42 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-ps-3.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mpaired-single" } */
> > +/* { dg-options "-mpaired-single (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS paired-single conditional move */  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-4.c
> > b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
> > index 06850ad..472f382 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-ps-4.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
> > @@ -1,5 +1,5 @@
> >  /* { dg-do run } */
> > -/* { dg-options "-mpaired-single" } */
> > +/* { dg-options "-mpaired-single (REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS paired-single comparisons */  #include <stdlib.h> diff
> > --git a/gcc/testsuite/gcc.target/mips/mips-ps-6.c
> > b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
> > index 5bdfe43..fd82d72 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips-ps-6.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
> > @@ -1,7 +1,7 @@
> >  /* mips-ps-2.c with an extra -ffinite-math-only option.  This option
> >     changes the way that abs.ps is handled.  */
> >  /* { dg-do run } */
> > -/* { dg-options "-mpaired-single -ffinite-math-only" } */
> > +/* { dg-options "-mpaired-single -ffinite-math-only
> > +(REQUIRES_STDLIB)" } */
> >
> >  /* Test MIPS paired-single builtin functions */  #include <stdlib.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips.exp
> > b/gcc/testsuite/gcc.target/mips/mips.exp
> > index 55e4223..f086e27 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips.exp
> > +++ b/gcc/testsuite/gcc.target/mips/mips.exp
> > @@ -254,6 +254,7 @@ set mips_option_groups {
> >      madd "HAS_MADD"
> >      maddps "HAS_MADDPS"
> >      lsa "(|!)HAS_LSA"
> > +    stdlib "REQUIRES_STDLIB"
> >      section_start "-Wl,--section-start=.*"
> >  }
> >
> > @@ -406,14 +407,19 @@ proc mips_same_option_p { option1 option2 } {
> >
> >  # Preprocess CODE using target_compile options OPTIONS.  Return the
> > # compiler output.
> > -proc mips_preprocess { options code } {
> > +proc mips_preprocess { options code ignore_output } {
> >      global tool
> >
> >      set src dummy[pid].c
> >      set f [open $src "w"]
> >      puts $f $code
> >      close $f
> > -    set output [${tool}_target_compile $src "" preprocess $options]
> > +    if { $ignore_output } {
> > +   set output [${tool}_target_compile $src dummy[pid].i preprocess
> > $options]
> > +   file delete dummy[pid].i
> > +    } else {
> > +   set output [${tool}_target_compile $src "" preprocess $options]
> > +    }
> >      file delete $src
> >
> >      return $output
> > @@ -463,7 +469,7 @@ proc mips_arch_info { arch prop } {
> >         #else
> >         int isa_rev = 0;
> >         #endif
> > -   }]
> > +   } 0]
> >     foreach lhs { isa isa_rev } {
> >         regsub ".*$lhs = (\[^;\]*).*" $output {\1} rhs
> >         verbose -log "Architecture $arch has $lhs $rhs"
> > @@ -816,7 +822,7 @@ proc mips-dg-init {} {
> >
> >         0
> >     };
> > -    }]
> > +    } 0]
> >      foreach line [split $output "\r\n"] {
> >     # Poor man's string concatenation.
> >     regsub -all {" "} $line "" line
> > @@ -1390,6 +1396,22 @@ proc mips-dg-options { args } {
> >     }
> >      }
> >
> > +    # If the test is marked as requiring standard libraries check
> > +    # that the sysroot has support for the current set of test options.
> > +    if { [mips_have_test_option_p options "REQUIRES_STDLIB"] } {
> > +   mips_push_test_options saved_options $extra_tool_flags
> > +   set output [mips_preprocess "" {
> > +         #include <stdlib.h>
> > +   } 1]
> > +   mips_pop_test_options saved_options
> > +
> > +   # If the preprocessing of the stdlib.h file produced errors mark
> > +   # the test as unsupported.
> > +   if { ![string equal $output ""] } {
> > +       set do_what [lreplace $do_what 1 1 "N"]
> > +   }
> > +     }
> > +
> >      # If the test is MIPS16-compatible, provide a counterpart to the
> >      # NOMIPS16 convenience macro.
> >      if { [mips_have_test_option_p options "-mips16"] } { diff --git
> > a/gcc/testsuite/gcc.target/mips/mips16-attributes.c
> > b/gcc/testsuite/gcc.target/mips/mips16-attributes.c
> > index 28bb9aa..421aa77 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips16-attributes.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips16-attributes.c
> > @@ -2,7 +2,7 @@
> >     of calling a nomips16/mips16/default function from a
> > nomips16/mips16/default
> >     function.  */
> >  /* { dg-do run } */
> > -/* { dg-options "(-mips16)" } */
> > +/* { dg-options "(-mips16) (REQUIRES_STDLIB)" } */
> >
> >  #include <stdlib.h>
> >
> > diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
> > b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
> > index ccd9d38..ca12d04 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
> > @@ -1,6 +1,6 @@
> >  /* Test MIPS32 DSP instructions */
> >  /* { dg-do run } */
> > -/* { dg-options "-mdsp" } */
> > +/* { dg-options "-mdsp (REQUIRES_STDLIB)" } */
> >
> >  #include <stdlib.h>
> >  #include <stdio.h>
> > diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp.c
> > b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
> > index 9aaf120..d212bcf 100644
> > --- a/gcc/testsuite/gcc.target/mips/mips32-dsp.c
> > +++ b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
> > @@ -1,6 +1,6 @@
> >  /* Test MIPS32 DSP instructions */
> >  /* { dg-do compile } */
> > -/* { dg-options "-mgp32 -mdsp" } */
> > +/* { dg-options "-mgp32 -mdsp (REQUIRES_STDLIB)" } */
> >  /* { dg-final { scan-assembler "\taddq.ph\t" } } */
> >  /* { dg-final { scan-assembler "\taddq_s.ph\t" } } */
> >  /* { dg-final { scan-assembler "\taddq_s.w\t" } } */ diff --git
> > a/gcc/testsuite/gcc.target/mips/save-restore-1.c
> > b/gcc/testsuite/gcc.target/mips/save-restore-1.c
> > index b3ce1b1..5e1e838 100644
> > --- a/gcc/testsuite/gcc.target/mips/save-restore-1.c
> > +++ b/gcc/testsuite/gcc.target/mips/save-restore-1.c
> > @@ -1,5 +1,5 @@
> >  /* Check that we can use the save instruction to save varargs.  */
> > -/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
> > +/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 (REQUIRES_STDLIB)" }
> > +*/
> >
> >  #include <stdarg.h>
> >

Reply via email to