On 01/09/2016 01:51 AM, David Malcolm wrote:
The root cause here is that the logic to reset the list of expected multiline outputs was being run from: handle-multiline-outputs, called by prune.exp's prune_gcc_output and none of that happens if the test is skipped by a target exclusion in dg-do.
Thanks for tackling this.
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index f9ec206..f778bca 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -836,6 +836,7 @@ if { [info procs saved-dg-test] == [list] } { global testname_with_flags global set_target_env_var global keep_saved_temps_suffixes + global multiline_expected_outputs if { [ catch { eval saved-dg-test $args } errmsg ] } { set saved_info $errorInfo @@ -871,6 +872,7 @@ if { [info procs saved-dg-test] == [list] } { if [info exists testname_with_flags] { unset testname_with_flags } + set multiline_expected_outputs [] } }
I looked at this code, and there are two near-identical blocks which reset all these variables. You are modifying only one of them, leaving the one inside the if { catch } thing unchanged - is this intentional?
Otherwise this looks reasonable IMO. Bernd