⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcc-dg.exp

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 EXP
字号:
#   Copyright (C) 1997, 1999, 2000 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 2 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 this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  load_lib dg.expload_lib file-format.expload_lib target-supports.expload_lib scanasm.expload_lib prune.expif ![info exists TORTURE_OPTIONS] {    # It is theoretically beneficial to group all of the O2/O3 options together,    # as in many cases the compiler will generate identical executables for    # all of them--and the c-torture testsuite will skip testing identical    # executables multiple times.    # Also note that -finline-functions is explicitly included in one of the    # items below, even though -O3 is also specified, because some ports may    # choose to disable inlining functions by default, even when optimizing.    set TORTURE_OPTIONS [list \	{ -O0 } \	{ -O1 } \	{ -O2 } \	{ -O3 -fomit-frame-pointer } \	{ -O3 -fomit-frame-pointer -funroll-loops } \	{ -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions } \	{ -O3 -g } \	{ -Os } ]}# Split TORTURE_OPTIONS into two choices: one for testcases with loops and# one for testcases without loops.set torture_with_loops $TORTURE_OPTIONSset torture_without_loops ""foreach option $TORTURE_OPTIONS {    if ![string match "*loop*" $option] {	lappend torture_without_loops $option    }}# Define gcc callbacks for dg.exp.proc gcc-dg-test { prog do_what extra_tool_flags } {    # Set up the compiler flags, based on what we're going to do.    switch $do_what {	"preprocess" {	    set compile_type "preprocess"	    set output_file "[file rootname [file tail $prog]].i"	}	"compile" {	    set compile_type "assembly"	    set output_file "[file rootname [file tail $prog]].s"	}	"assemble" {	    set compile_type "object"	    set output_file "[file rootname [file tail $prog]].o"	}	"link" {	    set compile_type "executable"	    set output_file "[file rootname [file tail $prog]].exe"	    # The following line is needed for targets like the i960 where	    # the default output file is b.out.  Sigh.	}	"run" {	    set compile_type "executable"	    # FIXME: "./" is to cope with "." not being in $PATH.	    # Should this be handled elsewhere?	    # YES.	    set output_file "./[file rootname [file tail $prog]].exe"	    # This is the only place where we care if an executable was	    # created or not.  If it was, dg.exp will try to run it.	    remote_file build delete $output_file;	}	default {	    perror "$do_what: not a valid dg-do keyword"	    return ""	}    }    set options ""    if { $extra_tool_flags != "" } {	lappend options "additional_flags=$extra_tool_flags"    }    set comp_output [gcc_target_compile "$prog" "$output_file" "$compile_type" $options];    return [list $comp_output $output_file]}proc gcc-dg-prune { system text } {    set text [prune_gcc_output $text]    # If we see "region xxx is full" then the testcase is too big for ram.    # This is tricky to deal with in a large testsuite like c-torture so    # deal with it here.  Just mark the testcase as unsupported.    if [regexp "(^|\n)\[^\n\]*: region \[^\n\]* is full" $text] {	# The format here is important.  See dg.exp.	return "::unsupported::memory full"    }    return $text}# Utility routines.## search_for -- looks for a string match in a file#proc search_for { file pattern } {    set fd [open $file r]    while { [gets $fd cur_line]>=0 } {	if [string match "*$pattern*" $cur_line] then {	    close $fd	    return 1	}    }    close $fd    return 0}# Modified dg-runtest that can cycle through a list of optimization options# as c-torture does.proc gcc-dg-runtest { testcases default-extra-flags } {    global runtests    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 for a loop within the source code - if we don't find one,	# don't pass -funroll[-all]-loops.	global torture_with_loops torture_without_loops	if [expr [search_for $test "for*("]+[search_for $test "while*("]] {	    set option_list $torture_with_loops	} else {	    set option_list $torture_without_loops	}	set nshort [file tail [file dirname $test]]/[file tail $test]	foreach flags $option_list {	    verbose "Testing $nshort, $flags" 1	    dg-test $test $flags ${default-extra-flags}	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -