From cbd8652b67eee2f10ce276968983b494829fa42d Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Thu, 11 Oct 2018 17:05:23 +0000 Subject: [PATCH] multiline.exp: complain about mismatched dg-{begin|end}-multiline-output Mismatched dg-{begin|end}-multiline-output directives are currently silently ignored, leading to difficult-to-diagnose test failures involving excess output. This patch makes multiline.exp complain about them. gcc/testsuite/ChangeLog: * lib/multiline.exp (dg-begin-multiline-output): Issue an error if there hasn't been a dg-end-multiline-output since the last dg-begin-multiline-output. (dg-end-multiline-output): Issue an error if there hasn't been a dg-begin-multiline-output. Reset _multiline_last_beginning_line as soon possible. Rename "line" to "last_line". From-SVN: r265046 --- gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/lib/multiline.exp | 27 +++++++++++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c5bbaf8df79..acac188edfd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2018-10-11 David Malcolm + + * lib/multiline.exp (dg-begin-multiline-output): Issue an error if + there hasn't been a dg-end-multiline-output since the last + dg-begin-multiline-output. + (dg-end-multiline-output): Issue an error if there hasn't been a + dg-begin-multiline-output. Reset _multiline_last_beginning_line + as soon possible. Rename "line" to "last_line". + 2018-10-11 Andrew Stubbs * selftests/repeat.rtl: New file. diff --git a/gcc/testsuite/lib/multiline.exp b/gcc/testsuite/lib/multiline.exp index 6c7ecdf483f..6e431d94e1c 100644 --- a/gcc/testsuite/lib/multiline.exp +++ b/gcc/testsuite/lib/multiline.exp @@ -72,6 +72,14 @@ proc dg-begin-multiline-output { args } { global _multiline_last_beginning_line verbose "dg-begin-multiline-output: args: $args" 3 set line [expr [lindex $args 0] + 1] + + # Complain if there hasn't been a dg-end-multiline-output + # since the last dg-begin-multiline-output + if { $_multiline_last_beginning_line != -1 } { + set last_directive_line [expr $_multiline_last_beginning_line - 1] + error "$last_directive_line: unterminated dg-begin-multiline-output" + } + set _multiline_last_beginning_line $line } @@ -84,8 +92,17 @@ proc dg-begin-multiline-output { args } { proc dg-end-multiline-output { args } { global _multiline_last_beginning_line verbose "dg-end-multiline-output: args: $args" 3 - set line [expr [lindex $args 0] - 1] - verbose "multiline output lines: $_multiline_last_beginning_line-$line" 3 + set first_line $_multiline_last_beginning_line + + # Complain if there hasn't been a dg-begin-multiline-output + if { $first_line == -1 } { + error "[lindex $args 0]: dg-end-multiline-output without dg-begin-multiline-output" + return + } + set _multiline_last_beginning_line -1 + + set last_line [expr [lindex $args 0] - 1] + verbose "multiline output lines: $first_line-$last_line" 3 if { [llength $args] > 3 } { error "[lindex $args 0]: too many arguments" @@ -109,16 +126,14 @@ proc dg-end-multiline-output { args } { # "prog" now contains the filename # Load it and split it into lines - set lines [_get_lines $prog $_multiline_last_beginning_line $line] + set lines [_get_lines $prog $first_line $last_line] verbose "lines: $lines" 3 # Create an entry of the form: first-line, last-line, lines, maybe_x - set entry [list $_multiline_last_beginning_line $line $lines $maybe_x] + set entry [list $first_line $last_line $lines $maybe_x] global multiline_expected_outputs lappend multiline_expected_outputs $entry verbose "within dg-end-multiline-output: multiline_expected_outputs: $multiline_expected_outputs" 3 - - set _multiline_last_beginning_line -1 } # Hook to be called by prune.exp's prune_gcc_output to -- 2.30.2