# Test for warnings when placing yield instructions into IQ2000's
# branch delay slot.  Written by Ben Elliston (bje@redhat.com)

# Run GAS and check that it emits the desired error for the test case.
# Arguments:
#   file -- name of the test case to assemble.
#   testname -- a string describing the test.
#   pattern -- a regular expression, suitable for use by the Tcl
#     regexp command, to decide if the error string was emitted by
#     the assembler to stderr.

proc iq2000_error_test { file testname {pattern ""} } {
    global comp_output

    gas_run $file "" ">/dev/null"
    verbose "output was $comp_output" 2

    if {$pattern == ""} {
	if {$comp_output == ""} { pass $testname } else { fail $testname }
	return
    }

    if {[regexp "Error: $pattern" $comp_output]} {
	pass $testname
    } else {
	fail $testname
    }
}

if [istarget iq2000*-*-*] {
    foreach file [glob -nocomplain -- $srcdir/$subdir/yield*.s] {
	set file [file tail $file]
	iq2000_error_test $file \
		"assembler emits yield instruction in delay slot error for $file" \
		"the yielding instruction \[a-zA-Z0-9\]+ may not be in a delay slot."
    }
    set testname "assembler emits no warnings for non-yield instruction in delay slot"
    iq2000_error_test noyield.s $testname
}
