# String tests that only need to run at default optimization.

# Copyright (C) 2010-2022 Free Software Foundation, Inc.
# 
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# Load support procs.

load_lib objc-dg.exp

# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
    set DEFAULT_CFLAGS ""
}

# Initialize `dg'.
dg-init

# Gather a list of all tests.
set tests [lsort [glob -nocomplain $srcdir/$subdir/*.m]]

# Main loop.
dg-runtest $tests "-fgnu-runtime -Wno-objc-root-class" $DEFAULT_CFLAGS

# darwin targets can also run code with the NeXT runtime.
if [istarget "*-*-darwin*" ] {
  dg-runtest $tests "-fnext-runtime -Wno-objc-root-class" $DEFAULT_CFLAGS
}

# All done.
dg-finish
