blob: 56b0c95ab75c25b4abe42870a93d99ed40131215 [file] [log] [blame]
#===-test/lib/identity.exp - Script for identity tests ---------------------===#
#
# High Level Virtual Machine (HLVM)
#
# Copyright (C) 2006 Reid Spencer. All Rights Reserved.
#
# This software is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or (at
# your option) any later version.
#
# This software 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 Lesser General Public License for
# more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library in the file named LICENSE.txt; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA
#
#===------------------------------------------------------------------------===#
proc hlvm-generate-test { complexity typecomplexity size seed } {
global srcdir subdir objdir tmpdir objrootdir llc llvm_ld gxx APR_lib
set outdir [file join $objdir $subdir]
set gentc [ file join $objrootdir tools hlvm-gentestcase hlvm-gentestcase ]
set compiler [file join $objrootdir tools hlvm-compiler hlvm-compiler ]
set source [file join $srcdir $subdir ]
set rtlib [file join $objrootdir hlvm Runtime HLVMRuntime.bca ]
set baselib [file join $objrootdir hlvm Base HLVMBase.bca ]
set vmmain [file join $objrootdir tools hlvm hlvm.bc ]
set test "gen-$complexity-$typecomplexity-$size-$seed"
set output [file join $outdir ${test}.out]
set testname [file rootname $test]
set testsrc [file join $source ${test}.hlx ]
set testexe [file join $outdir $testname ]
set testbc [file join $outdir ${test}.bc ]
set testlinked [file join $outdir ${test}.linked ]
set testlinkedbc [file join $outdir ${test}.linked.bc ]
set tests [file join $outdir ${test}.s ]
set retval [ catch { exec $gentc -seed $seed -size $size -complexity $complexity -type-complexity $typecomplexity -bundle "$test" -o $testsrc } msg ]
if { $retval != 0 } {
fail "$test: hlvm-gentestcase return $retval:\n$msg"
} else {
set retval [ catch { exec $compiler $testsrc -llvmbc -o $testbc } msg ]
if { $retval != 0 } {
fail "$test: hlvm-compiler returned $retval:\n$msg"
} else {
set retval [ catch { exec $llvm_ld -o $testlinked $testbc $vmmain $rtlib } msg ]
if { $retval != 0 } {
fail "$test: llvm-ld returned $retval:\n$msg"
} else {
set retval [ catch { exec $llc -fast -f -o $tests $testlinkedbc } msg ]
if { $retval != 0 } {
fail "$test: llc returned $retval:\n$msg"
} else {
set retval [ catch { exec $gxx -g -o $testexe $tests -L$APR_lib -lapr-1 -laprutil-1 } msg ]
if { $retval != 0 } {
fail "$test: gxx returned $retval:\n$msg"
} else {
set retval [ catch {exec $testexe $testname } msg ]
if { $retval != 0 } {
set status [lindex $::errorCode 2]
if {[lindex $::errorCode 0] eq "CHILDSTATUS"} {
pass "$test: $testexe returned $status"
} else {
fail "$test: $testexe returned $status\n$msg"
}
} else {
pass $test;
}
}
}
}
}
}
}