MIPS: Check for sysroot support when upgrading/downgrading test options
authorAndrew Bennett <andrew.bennett@imgtec.com>
Fri, 18 Nov 2016 12:34:19 +0000 (12:34 +0000)
committerMatthew Fortune <mpf@gcc.gnu.org>
Fri, 18 Nov 2016 12:34:19 +0000 (12:34 +0000)
gcc/testsuite/

* gcc.target/mips/inline-memcpy-1.c (dg-options): Add
(REQUIRES_STDLIB).
* gcc.target/mips/inline-memcpy-2.c: Ditto.
* gcc.target/mips/inline-memcpy-3.c: Ditto.
* gcc.target/mips/inline-memcpy-4.c: Ditto.
* gcc.target/mips/inline-memcpy-5.c: Ditto.
* gcc.target/mips/loongson-shift-count-truncated-1.c: Ditto.
* gcc.target/mips/loongson-simd.c: Ditto.
* gcc.target/mips/memcpy-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.

Co-Authored-By: Toma Tabacu <toma.tabacu@imgtec.com>
From-SVN: r242587

28 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/inline-memcpy-1.c
gcc/testsuite/gcc.target/mips/inline-memcpy-2.c
gcc/testsuite/gcc.target/mips/inline-memcpy-3.c
gcc/testsuite/gcc.target/mips/inline-memcpy-4.c
gcc/testsuite/gcc.target/mips/inline-memcpy-5.c
gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
gcc/testsuite/gcc.target/mips/loongson-simd.c
gcc/testsuite/gcc.target/mips/memcpy-1.c
gcc/testsuite/gcc.target/mips/mips-3d-1.c
gcc/testsuite/gcc.target/mips/mips-3d-2.c
gcc/testsuite/gcc.target/mips/mips-3d-3.c
gcc/testsuite/gcc.target/mips/mips-3d-4.c
gcc/testsuite/gcc.target/mips/mips-3d-5.c
gcc/testsuite/gcc.target/mips/mips-3d-6.c
gcc/testsuite/gcc.target/mips/mips-3d-7.c
gcc/testsuite/gcc.target/mips/mips-3d-8.c
gcc/testsuite/gcc.target/mips/mips-3d-9.c
gcc/testsuite/gcc.target/mips/mips-ps-1.c
gcc/testsuite/gcc.target/mips/mips-ps-2.c
gcc/testsuite/gcc.target/mips/mips-ps-3.c
gcc/testsuite/gcc.target/mips/mips-ps-4.c
gcc/testsuite/gcc.target/mips/mips-ps-6.c
gcc/testsuite/gcc.target/mips/mips.exp
gcc/testsuite/gcc.target/mips/mips16-attributes.c
gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
gcc/testsuite/gcc.target/mips/mips32-dsp.c
gcc/testsuite/gcc.target/mips/save-restore-1.c

index c039ecaba50b4fa18a3ed1fa22328709773dd870..58dba0ca4deb3a0bba10aff9f8bec5b9c5a473fd 100644 (file)
@@ -1,3 +1,43 @@
+2016-11-18  Andrew Bennett  <andrew.bennett@imgtec.com>
+           Toma Tabacu  <toma.tabacu@imgtec.com>
+
+       * gcc.target/mips/inline-memcpy-1.c (dg-options): Add
+       (REQUIRES_STDLIB).
+       * gcc.target/mips/inline-memcpy-2.c: Ditto.
+       * gcc.target/mips/inline-memcpy-3.c: Ditto.
+       * gcc.target/mips/inline-memcpy-4.c: Ditto.
+       * gcc.target/mips/inline-memcpy-5.c: Ditto.
+       * gcc.target/mips/loongson-shift-count-truncated-1.c: Ditto.
+       * gcc.target/mips/loongson-simd.c: Ditto.
+       * gcc.target/mips/memcpy-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.
+
 2016-11-17  Jeff Law  <law@redhat.com>
 
        PR middle-end/38219
index 5a254b1eaa913c1a52ee6434403e499c514926a4..8b1ad80520df75eae8ea4892c96ee85271821767 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common isa_rev>=6" } */
+/* { dg-options "-fno-common isa_rev>=6 (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-Os" } { "" } } */
 /* { dg-final { scan-assembler-not "\tmemcpy" } } */
 
index e144e61a800fe02627e9c2b542dde3c4e40a17e4..e9feb93409b52f8b28786be45f3a85d02043743c 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common isa_rev>=6" } */
+/* { dg-options "-fno-common isa_rev>=6 (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-Os"} { "" } } */
 /* { dg-final { scan-assembler-not "\tmemcpy" } } */
 /* { dg-final { scan-assembler-times "\tsh\t" 16 } } */
index 96a0387fce52c65873ed6847e013891df0e613a7..3bdb28b514e4fc5b6ec47fef37bff8d9f15ac028 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common isa_rev<=5" } */
+/* { dg-options "-fno-common isa_rev<=5 (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-Os"} { "" } } */
 /* { dg-final { scan-assembler-not "\tmemcpy" } } */
 /* { dg-final { scan-assembler-times "swl" 8 } } */
index 0e7a22e8a33cb19bacee10d2adf2130dd5e48145..d64eb5d48c050c544ac0e83e3dd0e3bdd79a5357 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common isa_rev<=5 -mabi=64" } */
+/* { dg-options "-fno-common isa_rev<=5 -mabi=64 (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-Os"} { "" } } */
 /* { dg-final { scan-assembler-not "\tmemcpy" } } */
 /* { dg-final { scan-assembler-times "sdl" 4 } } */
index 1b9fa16b2a74be743e4c1f4b916ec37da144d869..55ee38a1d738bd43dd34d3242b89fd515c891808 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common isa_rev<=5 -mabi=n32" } */
+/* { dg-options "-fno-common isa_rev<=5 -mabi=n32 (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-Os"} { "" } } */
 /* { dg-final { scan-assembler-not "\tmemcpy" } } */
 /* { dg-final { scan-assembler-times "sdl" 4 } } */
index f57a18ce12e3c35c8b6505808e884807a4648089..baed48cf5d58774c4654cb5112e9936902d9704e 100644 (file)
@@ -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 } } */
 
index 6d2ceb6371d193f8ab6f77de8366aa1d54dd539c..f263b4393e93044a0d823276120ed4985f61168c 100644 (file)
@@ -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>
index 94786a7371f3abcdd4a9c388cce63956e791ac91..bd8519fe088da0f6ba1b34cb16a9731cd6ffdff8 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-common" } */
+/* { dg-options "-fno-common (REQUIRES_STDLIB)" } */
 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
 /* { dg-final { scan-assembler-not "\tlbu\t" } } */
 
index 9c675130927961ad77f687447c51819dac8ad049..cb827ad4cf5f6608909d5c61517e94f6f9dc780a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D builtin functions */
 #include <stdlib.h>
index 4da059f9ec076175b430fb311a0684a905fe1290..52ec3a529bc90e62df3a69b5ec59414d726d7711 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D branch-if-any-two builtin functions */
 #include <stdlib.h>
index fcdcf24e6c0e7206eaca838b89a97c5b25e77eab..cfb9ea8f57a57ffbaab0d4dc392d1a19b0c3b7d5 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D absolute compare builtin functions */
 #include <stdlib.h>
index 340921c586e709b2b24549fbad9ce08a71731b23..ca4923c7921932c08342316609fe934beffea43c 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D branch-if-any-four builtin functions */
 #include <stdlib.h>
index e7dbfebef639aeaf5112d6dd2b7c2c332764814e..86523d27377b7adead619b8a35ec4e7ec82e570d 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D absolute-compare & branch-if-any-four builtin functions */
 #include <stdlib.h>
index d75faa1a91b17cf2c7ce361c90535d5b37e853b3..8e8fbb6b338750040340d894a8f73dfe777cc35e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D absolute compare (floats) builtin functions */
 #include <stdlib.h>
index 8e69d49b1222be74916f5fdc2482b97cfbf4cef1..20f01997216aa93ae94733c5276dec8e8c8e2d66 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D absolute compare (doubles) builtin functions */
 #include <stdlib.h>
index 0ad8c482aa1fa6e374141d68d341dbb29c0ce5c2..c59f54746358752424b15cf84ac1077b1ba28830 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS-3D absolute compare and conditional move builtin functions */
 #include <stdlib.h>
index 0c30252850645d5dd421bbbfb37199ff21553441..281584186c19d8f20d19366e80671cf388f5d895 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mips3d forbid_cpu=octeon.*" } */
+/* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Matrix Multiplications */
 #include <stdlib.h>
index 980dd05db84f4bdb8fb9e4e179046364ea9442d4..56ba68c87b6e059099e456f96f5bfd65b98704b1 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mpaired-single forbid_cpu=octeon.*" } */
+/* { dg-options "-mpaired-single forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test v2sf calculations */
 #include <stdlib.h>
index 654aa062d8031521ea50c3a25fc482a6de15555b..e0ff4d1864d7879b0aeb14dc6c94cbb05bf4dbb6 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mpaired-single forbid_cpu=octeon.*" } */
+/* { dg-options "-mpaired-single forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS paired-single builtin functions */
 #include <stdlib.h>
index fc892a805a1c555b26124133d33d196f715a2efd..a16bd4b214f3f8b8cdcb9c9abb73bec81b227568 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mpaired-single forbid_cpu=octeon.*" } */
+/* { dg-options "-mpaired-single forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS paired-single conditional move */
 #include <stdlib.h>
index 7871e56d2b9e4ab36affa3bdf3876ab5ee7c2808..893358d4c10456f538511946914fc71f8db91ffb 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-mpaired-single forbid_cpu=octeon.*" } */
+/* { dg-options "-mpaired-single forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS paired-single comparisons */
 #include <stdlib.h>
index 42c1756136faf15639937e3c86dedbe35d7a4ff8..8aa704d376f27329819855762a61760e12676b6d 100644 (file)
@@ -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 forbid_cpu=octeon.*" } */
+/* { dg-options "-mpaired-single -ffinite-math-only forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
 
 /* Test MIPS paired-single builtin functions */
 #include <stdlib.h>
index 97b2aea8f1cd4319983950b970c3afa43f63fb03..c0b9680cb33ce211dc3c63a120d70764c6326049 100644 (file)
@@ -261,6 +261,7 @@ set mips_option_groups {
     section_start "-Wl,--section-start=.*"
     frame-header "-mframe-header-opt|-mno-frame-header-opt"
     stack-protector "-fstack-protector"
+    stdlib "REQUIRES_STDLIB"
 }
 
 for { set option 0 } { $option < 32 } { incr option } {
@@ -447,14 +448,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
@@ -504,7 +510,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"
@@ -863,7 +869,7 @@ proc mips-dg-init {} {
 
            0
        };
-    }]
+    } 0]
     foreach line [split $output "\r\n"] {
        # Poor man's string concatenation.
        regsub -all {" "} $line "" line
@@ -1454,6 +1460,28 @@ 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 by changing the second element of
+       # do_what to "N".
+       # The second element of do_what holds information about test selection
+       # and it can have one of two values:
+       # "S" - the test is selected and will be run
+       # "N" - the test is not selected and will not be run
+       # This mirrors the format of dg-do-what from lib/dg.exp in DejaGNU.
+       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"] } {
index d90ec66d037df43ef10f5a6d166b0d0c3691e8df..e1497c01d735126f6357108f5d3576a8a79205e1 100644 (file)
@@ -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)" } */
 /* { dg-skip-if "" { *-*-* } { "-mmicromips" } { "" } } */
 
 #include <stdlib.h>
index ccd9d380fb3f660da2839259f41cc2bde0913bde..ca12d0406d6cf04dc30d80f3199ed2fca07c003e 100644 (file)
@@ -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>
index 9aaf120184f5e8fc81f7f63a3044af5d75aa7c20..d212bcfae2316930c1d4da45e82e7306a5bc5dc3 100644 (file)
@@ -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" } } */
index b3ce1b18dc27e0d6a65f47d0352306c47bd205d4..5e1e838c7d8561bcf2568ebcfaaee26e61d68617 100644 (file)
@@ -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>