1# Handlers for additional dg-xxx keywords in tests. 2 3# Copyright (C) 2004-2018 Free Software Foundation, Inc. 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 3 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; see the file COPYING3. If not see 17# <http://www.gnu.org/licenses/>. 18 19proc dg-require-c-std { args } { 20 if { ![ check_v3_target_c_std ] } { 21 upvar dg-do-what dg-do-what 22 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 23 return 24 } 25 return 26} 27 28proc dg-require-debug-mode { args } { 29 if { ![ check_v3_target_debug_mode ] } { 30 upvar dg-do-what dg-do-what 31 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 32 return 33 } 34 return 35} 36 37proc dg-require-profile-mode { args } { 38 if { ![ check_v3_target_profile_mode ] } { 39 upvar dg-do-what dg-do-what 40 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 41 return 42 } 43 return 44} 45 46proc dg-require-normal-mode { args } { 47 if { ![ check_v3_target_normal_mode ] } { 48 upvar dg-do-what dg-do-what 49 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 50 return 51 } 52 return 53} 54 55proc dg-require-normal-namespace { args } { 56 if { ![ check_v3_target_normal_namespace ] } { 57 upvar dg-do-what dg-do-what 58 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 59 return 60 } 61 return 62} 63 64proc dg-require-parallel-mode { args } { 65 if { ![ check_v3_target_parallel_mode ] } { 66 upvar dg-do-what dg-do-what 67 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 68 return 69 } 70 return 71} 72 73proc dg-require-fileio { args } { 74 if { ![ check_v3_target_fileio ] } { 75 upvar dg-do-what dg-do-what 76 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 77 return 78 } 79 return 80} 81 82proc dg-require-namedlocale { args } { 83 if { ![ check_v3_target_namedlocale [lindex $args 1] ] } { 84 upvar dg-do-what dg-do-what 85 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 86 return 87 } 88 return 89} 90 91proc dg-require-sharedlib { args } { 92 if { ![ check_v3_target_sharedlib ] } { 93 upvar dg-do-what dg-do-what 94 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 95 return 96 } 97 return 98} 99 100proc dg-require-time { args } { 101 if { ![ check_v3_target_time ] } { 102 upvar dg-do-what dg-do-what 103 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 104 return 105 } 106 return 107} 108 109proc dg-require-cstdint { args } { 110 if { ![ check_v3_target_cstdint ] } { 111 upvar dg-do-what dg-do-what 112 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 113 return 114 } 115 return 116} 117 118proc dg-require-cmath { args } { 119 if { ![ check_v3_target_cmath ] } { 120 upvar dg-do-what dg-do-what 121 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 122 return 123 } 124 return 125} 126 127proc dg-require-thread-fence { args } { 128 if { ![ check_v3_target_thread_fence ] } { 129 upvar dg-do-what dg-do-what 130 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 131 return 132 } 133 return 134} 135 136proc dg-require-atomic-builtins { args } { 137 if { ![ check_v3_target_atomic_builtins ] } { 138 upvar dg-do-what dg-do-what 139 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 140 return 141 } 142 return 143} 144 145proc dg-require-gthreads { args } { 146 if { ![ check_v3_target_gthreads ] } { 147 upvar dg-do-what dg-do-what 148 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 149 return 150 } 151 return 152} 153 154proc dg-require-gthreads-timed { args } { 155 if { ![ check_v3_target_gthreads_timed ] } { 156 upvar dg-do-what dg-do-what 157 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 158 return 159 } 160 return 161} 162 163proc dg-require-sleep { args } { 164 if { ![ check_v3_target_sleep ] } { 165 upvar dg-do-what dg-do-what 166 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 167 return 168 } 169 return 170} 171 172proc dg-require-sched-yield { args } { 173 if { ![ check_v3_target_sched_yield ] } { 174 upvar dg-do-what dg-do-what 175 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 176 return 177 } 178 return 179} 180 181proc dg-require-string-conversions { args } { 182 if { ![ check_v3_target_string_conversions ] } { 183 upvar dg-do-what dg-do-what 184 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 185 return 186 } 187 return 188} 189 190proc dg-require-swprintf { args } { 191 if { ![ check_v3_target_swprintf ] } { 192 upvar dg-do-what dg-do-what 193 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 194 return 195 } 196 return 197} 198 199proc dg-require-binary-io { args } { 200 if { ![ check_v3_target_binary_io ] } { 201 upvar dg-do-what dg-do-what 202 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 203 return 204 } 205 return 206} 207 208proc dg-require-nprocs { args } { 209 if { ![ check_v3_target_nprocs ] } { 210 upvar dg-do-what dg-do-what 211 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 212 return 213 } 214 return 215} 216 217proc dg-require-static-libstdcxx { args } { 218 if { ![ check_v3_target_static_libstdcxx ] } { 219 upvar dg-do-what dg-do-what 220 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 221 return 222 } 223 return 224} 225 226proc dg-require-little-endian { args } { 227 if { ![ check_v3_target_little_endian ] } { 228 upvar dg-do-what dg-do-what 229 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 230 return 231 } 232 return 233} 234 235proc dg-require-filesystem-ts { args } { 236 if { ![ check_v3_target_filesystem_ts ] } { 237 upvar dg-do-what dg-do-what 238 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] 239 return 240 } 241 return 242} 243 244proc add_options_for_no_pch { flags } { 245 # This forces any generated and possibly included PCH to be invalid. 246 return "-D__GLIBCXX__=99999999" 247} 248 249# Like dg-options, but adds to the default options rather than replacing them. 250 251proc dg-additional-options { args } { 252 upvar dg-extra-tool-flags extra-tool-flags 253 254 if { [llength $args] > 3 } { 255 error "[lindex $args 0]: too many arguments" 256 return 257 } 258 259 if { [llength $args] >= 3 } { 260 switch [dg-process-target [lindex $args 2]] { 261 "S" { eval lappend extra-tool-flags [lindex $args 1] } 262 "N" { } 263 "F" { error "[lindex $args 0]: `xfail' not allowed here" } 264 "P" { error "[lindex $args 0]: `xfail' not allowed here" } 265 } 266 } else { 267 eval lappend extra-tool-flags [lindex $args 1] 268 } 269} 270