-proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx prcontext} {
+proc llvm-runtest { programs } {
+ global srcroot objroot srcdir objdir subdir target_triplet prcontext
+ global llvmgcc llvmgxx global llvmgcc_version llvmgccmajvers
+ global gccpath gxxpath compile_c compile_cxx link shlibext llvmlibsdir
+
+ set timeout 60
set path [file join $objdir $subdir]
set runline
set hasRunline 1
- #replace %s with filename
- regsub -all {%s} $runline $test new_runline
-
- #replace %t with temp filenames
- regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline
-
+ set new_runline $runline
#replace %prcontext with prcontext.tcl (Must replace before %p)
regsub -all {%prcontext} $new_runline $prcontext new_runline
-
- #replace %p with path to source,
- regsub -all {%p} $new_runline $srcdir new_runline
-
#replace %llvmgcc with actual path to llvmgcc
- regsub -all {%llvmgcc} $new_runline $llvmgcc new_runline
-
+ regsub -all {%llvmgcc} $new_runline "$llvmgcc -emit-llvm" new_runline
#replace %llvmgxx with actual path to llvmg++
- regsub -all {%llvmgxx} $new_runline $llvmgxx new_runline
-
+ regsub -all {%llvmgxx} $new_runline "$llvmgxx -emit-llvm" new_runline
+ #replace %compile_c with C compilation command
+ regsub -all {%compile_c} $new_runline "$compile_c" new_runline
+ #replace %compile_cxx with C++ compilation command
+ regsub -all {%compile_cxx} $new_runline "$compile_cxx" new_runline
+ #replace %link with C++ link command
+ regsub -all {%link} $new_runline "$link" new_runline
+ #replace %shlibext with shared library extension
+ regsub -all {%shlibext} $new_runline "$shlibext" new_runline
+ #replace %llvmlibsdir with configure library directory
+ regsub -all {%llvmlibsdir} $new_runline "$llvmlibsdir" new_runline
+ #replace %p with path to source,
+ regsub -all {%p} $new_runline [file join $srcdir $subdir] new_runline
+ #replace %s with filename
+ regsub -all {%s} $new_runline $test new_runline
+ #replace %t with temp filenames
+ regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline
puts $scriptFileId $new_runline
} elseif {[regexp {XFAIL:[ *](.+)} $line match targets]} {
set targets
-
#split up target if more then 1 specified
foreach target [split $targets ,] {
set outcome XFAIL
} elseif { [regexp $target $target_triplet match] } {
set outcome XFAIL
+ } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2] } {
+ if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } {
+ set outcome XFAIL
+ }
}
}
} else {
#run script and catch errors
- set retval [ catch {exec /bin/sh $script >& $output} ]
+ set retval [ catch {exec /bin/sh $script >& $output} errmsg ]
if { $retval == 1 } {
#Get output
switch $outcome {
PASS {
file delete $output
- fail "$test: \n$result"
+ fail "$test: \n$errmsg\n$result"
}
XFAIL {
- xfail "$test: \n$result"
+ xfail "$test: \n$errmsg\n$result"
}
default {
file delete $output
}
}
}
-
-