set code [lindex $::errorCode 0]
set lineno [expr $lineno + 1]
if { $PRS != ""} {
- set PRS " for $PRS"
+ set PRS " for $PRS"
}
set errmsg " at line $lineno\nwhile running: $line\n$errmsg"
switch "$code" {
NONE {
# Any other error such as stderr output of a program, or syntax error in
# the RUN line.
- set resultmsg "$test$PRS\nFailed with unknown error (or has stderr output)$errmsg"
+ set resultmsg "$test$PRS\nFailed with unknown error (or has stderr output)$errmsg"
}
default {
- set resultmsg "$test$PRS\nFailed with unknown error$errmsg"
+ set resultmsg "$test$PRS\nFailed with unknown error$errmsg"
}
}
- }
+ }
return $resultmsg
}
# This procedure performs variable substitutions on the RUN: lines of a test
# cases.
proc substitute { line test tmpFile } {
- global srcroot objroot srcdir objdir subdir target_triplet prcontext
+ global srcroot objroot srcdir objdir subdir target_triplet prcontext
global llvmgcc llvmgxx llvmgcc_version llvmgccmajvers ocamlc
global gccpath gxxpath compile_c compile_cxx link shlibext llvmlibsdir
- global valgrind
+ global llvmdsymutil valgrind grep gas bugpoint_topts
set path [file join $srcdir $subdir]
# Substitute all Tcl variables.
regsub -all {%shlibext} $new_line "$shlibext" new_line
#replace %ocamlc with ocaml compiler command
regsub -all {%ocamlc} $new_line "$ocamlc" new_line
+ #replace %llvmdsymutil with dsymutil command
+ regsub -all {%llvmdsymutil} $new_line "$llvmdsymutil" new_line
#replace %llvmlibsdir with configure library directory
regsub -all {%llvmlibsdir} $new_line "$llvmlibsdir" new_line
- #replace %p with path to source,
+ #replace %bugpoint_topts with actual bugpoint target options
+ regsub -all {%bugpoint_topts} $new_line "$bugpoint_topts" new_line
+ #replace %p with path to source,
regsub -all {%p} $new_line [file join $srcdir $subdir] new_line
#replace %s with filename
regsub -all {%s} $new_line $test new_line
#replace _#MARKER#_ with %
regsub -all {_#MARKER#_} $new_line % new_line
+ #replace grep with GNU grep
+ regsub -all { grep } $new_line " $grep " new_line
+ #replace as with GNU as
+ regsub -all {\| as } $new_line "| $gas " new_line
+
#valgind related stuff
# regsub -all {bugpoint } $new_line "$valgrind bugpoint " new_line
regsub -all {llc } $new_line "$valgrind llc " new_line
set timeout 60
set path [file join $objdir $subdir]
-
+
#Make Output Directory if it does not exist already
if { [file exists path] } {
cd $path
file mkdir $path
cd $path
}
-
+
file mkdir Output
cd Output
foreach test $test_source_files {
#Should figure out best way to set the timeout
#set timeout 40
-
+
set filename [file tail $test]
verbose "ABOUT TO RUN: $filename" 2
set outcome PASS
set tmpFile "$filename.tmp"
-
+
# Mark that it should not be XFAIL for this target.
set targetPASS 0
-
+
#set hasRunline bool to check if testcase has a runline
set numLines 0
foreach line [split [read $testFileId] \n] {
# if its the END. line then stop parsing (optimization for big files)
- if {[regexp {END.[[:space:]]*$} $line match endofscript]} {
+ if {[regexp {END.[[:space:]]*$} $line match endofscript]} {
break
# if the line is continued, concatenate and continue the loop
set runline "$runline$oneline "
# if its a terminating RUN: line then do substitution on the whole line
- # and then save the line.
+ # and then save the line.
} elseif {[regexp {RUN: *(.+)$} $line match oneline suffix]} {
set runline "$runline$oneline"
set runline [ substitute $runline $test $tmpFile ]
#split up target if more then 1 specified
foreach target [split $targets ,] {
- if { [regexp {\*} $target match] } {
+ if { $target == "*" } {
if {$targetPASS != 1} {
set outcome XFAIL
}
}
}
}
-
+
# Done reading the script
close $testFileId
-
-
+
+
if { $numLines == 0 } {
fail "$test: \nDoes not have a RUN line\n"
} else {
foreach supported_lang [split "$llvmgcc_langs" ,] {
if { "$lang" == "$supported_lang" } {
# FIXME: Knowing it is configured is not enough. We should do two more
- # checks here. First, we need to run llvm-gcc -print-prog-name=$file to
+ # checks here. First, we need to run llvm-gcc -print-prog-name=$file to
# get the path to the compiler. If we don't get a path, the language isn't
- # properly configured or built. If we do get a path, we should check to
+ # properly configured or built. If we do get a path, we should check to
# make sure that it is executable and perhaps even try executing it.
return 1;
}