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

📄 treetests.exp

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 EXP
字号:
# Tests for treelang; run from gcc/treelang/Make-lang.in => gcc/Makefile# find ttt for the actual tests# Copyright (C) 1999, 2000, 2001, 2002 by The Free Software Foundation# 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, 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, 59 Temple Place - Suite 330,# Boston, MA 02111-1307, USA.## In other words, you are welcome to use, share and improve this program.# You are forbidden to forbid anyone else to use, share and improve# what you give them.   Help stamp out software-hoarding!  # Check the pgm is even there and set up the basicsproc init_utility {pgm} {    global transform    global pgm_actual    global pgm_base    global fix_progname    global path# maybe add "X" to front of fail to say it is an expected failure    global X    set pgm_base ${pgm}    set pgm_actual ${pgm}    if { ${transform} != "s,x,x,"} {        verbose "1. program name was ${pgm}" 2        set sed_rc [catch {eval exec sed -e "${transform}" <<${pgm} } catch_res]        if { ${sed_rc} != "0" } {            verbose "2. Program name transform failed rc=${sed_rc} stat=${catch_res}" 1            ${X}fail "${pgm} sed"            return 0        }        set pgm_actual ${catch_res}        verbose "3. program name after transformation is ${pgm_actual}" 2    }    set which_rc [catch {exec which ${pgm_actual}} stat]    if { ${which_rc} != "0" } {        verbose "4. ${pgm_base} cannot be found rc=${which_rc} stat=${stat}" 1        ${X}fail "${pgm} = ${pgm_actual} not found in path (${path})"        return 0    }    set fix_progname "s,${pgm_actual},${pgm_base},"    verbose "5. fix program name value = ${fix_progname}" 4    return 1}#run pgm, option to remove file names from outputsproc run3 {srcdd testdd parms group_nbr item_nbr nonzero_RC_expected check_file sanitize_output tree1 pipe} {    global transform    global pgm_actual    global pgm_base    global fix_progname    global X    global extras    set error_msg 0    set basefile "a${group_nbr}${pgm_base}.out${item_nbr}"    set infile  ""    set outfile  ""    set suffix ""    set temp_extras "-O3 "    set real_pgm_actual ${pgm_actual}    if  {${tree1} > 0} {        if {"${pgm_actual}" == "gcc"} {            set real_pgm_actual "xgcc"            set temp_extras "${extras}"        }        set infile "${srcdd}/a${group_nbr}${pgm_base}i${item_nbr}.tree"        set mainfile "${srcdd}/a${group_nbr}${pgm_base}i${item_nbr}.c"        set outfile "-o ${testdd}/a${group_nbr}${pgm_base}o${item_nbr}${suffix}"    }        verbose "6. exec ${real_pgm_actual} ${temp_extras} ${parms} ${mainfile} ${infile} ${outfile} >${testdd}/${basefile} 2>${testdd}/${basefile}err" 2    set run_rc [catch {eval exec ${real_pgm_actual} ${temp_extras} ${parms} ${mainfile} ${infile} ${outfile} >${testdd}/${basefile} 2>${testdd}/${basefile}err} catch_res]    if {${run_rc} == 1} {        if {${nonzero_RC_expected} == 0} {            verbose "7. ${real_pgm_actual} ${group_nbr} ${item_nbr} failed due to rc=${run_rc} status=${catch_res}" 1            ${X}fail "${pgm_base} ${group_nbr} ${item_nbr} rc!=0"             return        }     } else {        if {${nonzero_RC_expected} == 1} {            verbose "8. ${pgm_actual} ${group_nbr} ${item_nbr} failed - did not produce nonzero return code as expected rc=${run_rc} status=${catch_res}" 1            ${X}fail "${pgm_base} ${group_nbr} ${item_nbr} rc=0"             return        }     }# change the filenames to (file) in output if needed to allow testing    set checkfile1 "${srcdd}/${basefile}"    set checkfile2 "${testdd}/${basefile}"    if {${sanitize_output} != 0} {        set oldcheckfile1 "${checkfile1}"        set oldcheckfile2 "${checkfile2}"        set checkfile1 "${testdd}/${basefile}.test.nofilename"        set checkfile2 "${testdd}/${basefile}.run.nofilename"        set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile1} >${checkfile1}} catch_res]        if {${run_rc} == 1} {            verbose "9. sed to cleanup filenames (std 1) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1            if  {${error_msg} == 0} {                set error_msg "9. sed to cleanup filenames (std 1) in pgm output failed due to rc=${run_rc} status=${catch_res}"            }        }        set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile2} | sed -e  "${fix_progname}"  >${checkfile2}} catch_res]        if {${run_rc} == 1} {            verbose "10. sed to cleanup filenames (std 2) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1            if  {${error_msg} == 0} {                set error_msg "10. sed to cleanup filenames (std 2) in pgm output failed due to rc=${run_rc} status=${catch_res}"             }        }    }    set diff [diff ${checkfile1} ${checkfile2}]    if {${diff} != 1} {        verbose "11. ${pgm_actual} ${group_nbr} ${item_nbr} diff stdout failed rc=${diff}" 1        if  {${error_msg} == 0} {            set error_msg "11. ${pgm_actual} ${group_nbr} ${item_nbr} diff stdout failed rc=${diff}"        }    }    set checkfile1 "${srcdd}/${basefile}err"    set checkfile2 "${testdd}/${basefile}err"    if {${sanitize_output} != 0} {        set oldcheckfile1 "${checkfile1}"        set oldcheckfile2 "${checkfile2}"        set checkfile1 "${testdd}/${basefile}err.test.nofilename"        set checkfile2 "${testdd}/${basefile}err.run.nofilename"        set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile1} >${checkfile1}} catch_res]        if {${run_rc} == 1} {            verbose "12. sed to cleanup filenames (err 1) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1            if  {${error_msg} == 0} {                set error_msg "12. sed to cleanup filenames (err 1) in pgm output failed due to rc=${run_rc} status=${catch_res}"            }        }        set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile2} | sed -e  "${fix_progname}"  >${checkfile2}} catch_res]        if {${run_rc} == 1} {            verbose "13. sed to cleanup filenames (err 2) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1            if  {${error_msg} == 0} {                set error_msg "13. sed to cleanup filenames (err 2) in pgm output failed due to rc=${run_rc} status=${catch_res}"            }        }    }    set diff [diff ${checkfile1} ${checkfile2}]    if {${diff} != 1} {        verbose "14. ${pgm_actual} ${group_nbr} ${item_nbr} diff stderr failed rc=${diff}" 1        if  {${error_msg} == 0} {            set error_msg "14. ${pgm_actual} ${group_nbr} ${item_nbr} diff stderr failed rc=${diff}"        }    }    if {${check_file} >0} {        if  {${tree1} == 0} {            set checkfile1 "${srcdd}/${basefile}file"            set checkfile2 "${testdd}/${basefile}file"            if {${sanitize_output} != 0} {                set oldcheckfile1 "${checkfile1}"                set oldcheckfile2 "${checkfile2}"                set checkfile1 "${testdd}/${basefile}file.test.nofilename"                set checkfile2 "${testdd}/${basefile}file.run.nofilename"                set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile1} >${checkfile1}} catch_res]                if {${run_rc} == 1} {                    verbose "15. sed to cleanup filenames (err 1) in pgm stdout failed due to rc=${run_rc} status=${catch_res}" 1                    if  {${error_msg} == 0} {                        set error_msg "15. sed to cleanup filenames (err 1) in pgm stdout failed due to rc=${run_rc} status=${catch_res}"                    }                }                set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile2} | sed -e  "${fix_progname}"  >${checkfile2}} catch_res]                if {${run_rc} == 1} {                    verbose "16. sed to cleanup filenames (err 2) in pgm stdout failed due to rc=${run_rc} status=${catch_res}" 1                    if  {${error_msg} == 0} {                        set error_msg "16. sed to cleanup filenames (err 2) in pgm stdout failed due to rc=${run_rc} status=${catch_res}"                    }                }            }            set diff [diff ${checkfile1} ${checkfile2}]            if {${diff} != 1} {                verbose "17. ${pgm_actual} ${group_nbr} ${item_nbr} diff stdout file failed rc=${diff}" 1                if  {${error_msg} == 0} {                    set error_msg "17. ${pgm_actual} ${group_nbr} ${item_nbr} diff stdout file failed rc=${diff}"                }            }        }    }        if {${check_file} >1} {        if  {${tree1} == 0} {            set checkfile1 "${srcdd}/${outfile}"            set checkfile2 "${testdd}/${outfile}"            if {${sanitize_output} != 0} {                set oldcheckfile1 "${checkfile1}"                set oldcheckfile2 "${checkfile2}"                set checkfile1 "${testdd}/${basefile}out.test.nofilename"                set checkfile2 "${testdd}/${basefile}out.run.nofilename"                set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile1} >${checkfile1}} catch_res]                if {${run_rc} == 1} {                    verbose "18. sed to cleanup filenames (err 1) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1                    if  {${error_msg} == 0} {                        set error_msg "18. sed to cleanup filenames (err 1) in pgm output failed due to rc=${run_rc} status=${catch_res}"                    }                }                set run_rc [catch {eval exec sed -f ${srcdd}/filefix.sed <${oldcheckfile2} | sed -e  "${fix_progname}"  >${checkfile2}} catch_res]                if {${run_rc} == 1} {                    verbose "19. sed to cleanup filenames (err 2) in pgm output failed due to rc=${run_rc} status=${catch_res}" 1                    if  {${error_msg} == 0} {                        set error_msg "19. sed to cleanup filenames (err 2) in pgm output failed due to rc=${run_rc} status=${catch_res}"                    }                }            }            set diff [diff ${checkfile1} ${checkfile2}]            if {${diff} != 1} {                verbose "20. ${pgm_actual} ${group_nbr} ${item_nbr} diff output file failed rc=${diff}" 1                if  {${error_msg} == 0} {                    set error_msg "20. ${pgm_actual} ${group_nbr} ${item_nbr} diff output file failed rc=${diff}"                }            }        }    }        if {${check_file} >2} {        set outfile "a${group_nbr}${pgm_base}o${item_nbr}${suffix}"        set pgmrun "${testdd}/a${group_nbr}${pgm_base}o${item_nbr}${suffix}"        set checkfile1 "${srcdd}/${outfile}runpgm"        set checkfile2 "${testdd}/${outfile}runpgm"        verbose "21. exec ${pgmrun} >${checkfile2} 2>${checkfile2}err" 2        set run_rc [catch {eval exec ${pgmrun} >${checkfile2} 2>${checkfile2}err} catch_res]        if {${run_rc} == 1} {            if {${nonzero_RC_expected} == 0} {                verbose "22. ${pgm_actual} ${group_nbr} ${item_nbr} failed due to rc=${run_rc} status=${catch_res}" 1                ${X}fail "${pgm_base} ${group_nbr} ${item_nbr} run"                 return            }         } else {            if {${nonzero_RC_expected} == 1} {                verbose "23. ${pgm_actual} ${group_nbr} ${item_nbr} failed - did not produce nonzero return code as expected rc=${run_rc} status=${catch_res}" 1                ${X}fail "${pgm_base} ${group_nbr} ${item_nbr} run"                 return            }         }        set diff [diff ${checkfile1} ${checkfile2}]        if {${diff} != 1} {            verbose "24. ${pgm_actual} ${group_nbr} ${item_nbr} diff run output file failed rc=${diff}" 1            if  {${error_msg} == 0} {                set error_msg "24. ${pgm_actual} ${group_nbr} ${item_nbr} diff run output file failed rc=${diff}"            }        }        set diff [diff ${checkfile1}err ${checkfile2}err]        if {${diff} != 1} {            verbose "25. ${pgm_actual} ${group_nbr} ${item_nbr} diff run stderr file failed rc=${diff}" 1            if  {${error_msg} == 0} {                set error_msg "25. ${pgm_actual} ${group_nbr} ${item_nbr} diff run stderr file failed rc=${diff}"            }        }    }    if {${error_msg}>0} {        ${X}fail "${pgm_base} ${group_nbr} ${item_nbr} fail code=${error_msg}"     } else {        pass "${pgm_base} ${group_nbr} ${item_nbr}"     }    return }set extras "$env(gcc_extras)"set path $env(PATH)set transform $env(TRANSFORM)set srcdir $env(srcdir)verbose "source directory ${srcdir}\n" 2verbose "transform ${transform}\n" 2set sourcedir "${srcdir}/testsuite/treelang"set testdir "treelang"set pgm_actual ""# srcdd testdd parms group_nbr item_nbr nonzero_RC_expected check_file sanitize_output tree1# ttt#GCC - main C compiler tests via GCCset X ""set check_rc [init_utility "gcc"]if {${check_rc} == 1} {##set X "x"set X ""    run3 "${sourcedir}" "${testdir}" " -g -O3 " 01 01 0 3 0 1 0set X ""}

⌨️ 快捷键说明

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