Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / gcc.target / mips / mips.exp
blobd88a867db1bf80c70a40cea5b8f489307ae2553f
1 # Copyright (C) 1997 Free Software Foundation, Inc.
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # GCC testsuite that uses the `dg.exp' driver.
19 # Exit immediately if this isn't a MIPS target.
20 if ![istarget mips*-*-*] {
21 return
24 # Load support procs.
25 load_lib gcc-dg.exp
27 # Find out which target is selected by the default compiler flags.
28 # Also remember which aspects of the target are forced on the command
29 # line (as opposed to being overridable defaults).
31 # $mips_isa: the ISA level specified by __mips
32 # $mips_arch: the architecture specified by _MIPS_ARCH
33 # $mips_mips16: true if MIPS16 mode is selected
34 # $mips_mips64: true if 64-bit output is selected
35 # $mips_float: "hard" or "soft"
37 # $mips_forced_isa: true if the command line uses -march=* or -mips*
38 # $mips_forced_abi: true if the command line uses -mabi=* or -mgp*
39 # $mips_forced_float: true if the command line uses -mhard/soft-float
40 proc setup_mips_tests {} {
41 global mips_isa
42 global mips_arch
43 global mips_mips16
44 global mips_mips64
45 global mips_float
47 global mips_forced_isa
48 global mips_forced_abi
49 global mips_forced_float
51 global compiler_flags
52 global tool
54 set src dummy[pid].c
55 set f [open $src "w"]
56 puts $f {
57 int isa = __mips;
58 const char *arch = _MIPS_ARCH;
59 #ifdef __mips16
60 int mips16 = 1;
61 #endif
62 #ifdef __mips64
63 int mips64 = 1;
64 #endif
65 #ifdef __mips_hard_float
66 const char *float = "hard";
67 #else
68 const char *float = "soft";
69 #endif
71 close $f
72 set output [${tool}_target_compile $src "" preprocess ""]
73 file delete $src
75 regexp {isa = ([^;]*)} $output dummy mips_isa
76 regexp {arch = "([^"]*)} $output dummy mips_arch
77 set mips_mips16 [regexp {mips16 = 1} $output]
78 set mips_mips64 [regexp {mips64 = 1} $output]
79 regexp {float = "([^"]*)} $output dummy mips_float
81 set mips_forced_isa [regexp -- {(-mips|-march)} $compiler_flags]
82 set mips_forced_abi [regexp -- {(-mgp|-mabi)} $compiler_flags]
83 set mips_forced_float [regexp -- {-m(hard|soft)-float} $compiler_flags]
86 # Return true if command-line option FLAG forces 32-bit code.
87 proc is_gp32_flag {flag} {
88 switch -glob -- $flag {
89 -march=mips32* -
90 -mgp32 { return 1 }
91 default { return 0 }
95 # Like dg-options, but treats certain MIPS-specific options specially:
97 # -mgp32
98 # -march=mips32*
99 # Force 32-bit code. Skip the test if the multilib flags force
100 # a 64-bit ABI.
102 # -mgp64
103 # Force 64-bit code. Also force a 64-bit target architecture
104 # if the other flags don't do so. Skip the test if the multilib
105 # flags force a 32-bit ABI or a 32-bit architecture.
107 # -mno-mips16
108 # Skip the test for MIPS16 targets.
110 # -march=*
111 # -mips*
112 # Select the target architecture. Skip the test for MIPS16 targets
113 # or if the multilib flags force a different architecture.
115 # -msoft-float
116 # -mhard-float
117 # Select the given floating-point mode. Skip the test if the
118 # multilib flags force a different selection.
119 proc dg-mips-options {args} {
120 upvar dg-extra-tool-flags extra_tool_flags
121 upvar dg-do-what do_what
123 global mips_isa
124 global mips_arch
125 global mips_mips16
126 global mips_mips64
127 global mips_float
129 global mips_forced_isa
130 global mips_forced_abi
131 global mips_forced_float
133 set flags [lindex $args 1]
134 set matches 1
136 # First handle the -mgp* options. Add an architecture option if necessary.
137 foreach flag $flags {
138 if {[is_gp32_flag $flag] && $mips_mips64} {
139 if {$mips_forced_abi} {
140 set matches 0
141 } else {
142 append flags " -mabi=32"
144 } elseif {$flag == "-mgp64" && !$mips_mips64} {
145 if {$mips_forced_abi} {
146 set matches 0
147 } else {
148 append flags " -mabi=o64"
149 if {[lsearch -regexp $flags {^(-mips|-march)}] < 0} {
150 append flags " -mips3"
155 # Handle the other options.
156 foreach flag $flags {
157 if {$flag == "-mno-mips16"} {
158 if {$mips_mips16} {
159 set matches 0
161 } elseif {[regexp -- {^-march=(.*)} $flag dummy arch]} {
162 if {$mips_mips16 || ($arch != $mips_arch && $mips_forced_isa)} {
163 set matches 0
165 } elseif {[regexp -- {^-mips(.*)} $flag dummy isa] && $isa != 16} {
166 if {$mips_mips16 || ($isa != $mips_isa && $mips_forced_isa)} {
167 set matches 0
169 } elseif {[regexp -- {^-m(hard|soft)-float} $flag dummy float]} {
170 if {$mips_float != $float && $mips_forced_float} {
171 set matches 0
175 if {$matches} {
176 set extra_tool_flags $flags
177 } else {
178 set do_what [list [lindex $do_what 0] "N" "P"]
182 setup_mips_tests
184 dg-init
185 dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" ""
186 dg-finish