blob: 21ff22945fd332f8ee16f3e1e356ffccfb016884 [file] [log] [blame]
# Copyright (C) 1997-2026 Free Software Foundation, Inc.
# This program 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 of the License, or
# (at your option) any later version.
#
# This program 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_lib gcc-dg.exp
# Define ALGOL68 callbacks for dg.exp.
proc algol68-dg-test { prog do_what extra_tool_flags } {
return [gcc-dg-test-1 algol68_target_compile $prog $do_what $extra_tool_flags]
}
proc algol68-dg-prune { system text } {
return [gcc-dg-prune $system $text]
}
# Modified dg-runtest that can cycle through a list of optimization options
# as c-torture does.
proc algol68-dg-runtest { testcases flags default-extra-flags } {
global runtests
global TORTURE_OPTIONS
foreach test $testcases {
# If we're only testing specific files and this isn't one of
# them, skip it.
if ![runtest_file_p $runtests $test] {
continue
}
# look if this is dg-do-run test, in which case
# we cycle through the option list, otherwise we don't
if [expr [search_for $test "dg-do run"]] {
set option_list $TORTURE_OPTIONS
} else {
set option_list [list { -O2 } ]
}
set nshort [file tail [file dirname $test]]/[file tail $test]
foreach flags_t $option_list {
verbose "Testing $nshort, $flags $flags_t" 1
dg-test $test "$flags $flags_t" ${default-extra-flags}
}
}
}
# Build a series of modules ACCESSed by this test.
#
# The first to dg-modules is a list of module names. The source file
# for a given module MODULE is assumed to be MODULE.a68, and that file
# must reside in the current directory.
#
# The second option to dg-modules, which is optional, can be used to
# specify additional options to be passed to ga68 when it compiles the
# modules.
proc dg-modules { args } {
global objdir
global srcdir
global subdir
if { [llength $args] != 2 && [llength $args] != 3 } {
error "[lindex $args 0]: invalid arguments"
}
set modules [lindex $args 1]
set module_options {}
if { [llength $args] == 3 } {
set module_options [lindex $args 2]
}
foreach module $modules {
set srcfile "${module}.a68"
set objfile "${module}.o"
# Compile the module
set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \
$objdir/$objfile object $module_options]
}
}