Please can someone review this testsuite patch: https://gcc.gnu.org/pipermail/gcc-patches/2023-May/620275.html
Thanks Dave On Wed, 2023-05-31 at 14:06 -0400, David Malcolm wrote: > I have followup patches that require checking for multiline patterns > that have blank lines within them, so this moves the handling of > multiline patterns before the check for blank lines, allowing for > such > multiline patterns. > > Doing so uncovers some issues with existing multiline directives, > which > the patch fixes. > > gcc/testsuite/ChangeLog: > * c-c++-common/Wlogical-not-parentheses-2.c: Split up the > multiline directive. > * gcc.dg/analyzer/malloc-macro-inline-events.c: Remove > redundant > dg-regexp directives. > * gcc.dg/missing-header-fixit-5.c: Split up the multiline > directives. > * lib/gcc-dg.exp (gcc-dg-prune): Move call to > handle-multiline-outputs from prune_gcc_output to here. > * lib/multiline.exp (dg-end-multiline-output): Move call to > maybe-handle-nn-line-numbers from prune_gcc_output to here. > * lib/prune.exp (prune_gcc_output): Move calls to > maybe-handle-nn-line-numbers and handle-multiline-outputs > from > here to the above. > --- > .../c-c++-common/Wlogical-not-parentheses-2.c | 2 ++ > .../gcc.dg/analyzer/malloc-macro-inline-events.c | 5 ----- > gcc/testsuite/gcc.dg/missing-header-fixit-5.c | 10 > ++++++++-- > gcc/testsuite/lib/gcc-dg.exp | 5 +++++ > gcc/testsuite/lib/multiline.exp | 7 ++++++- > gcc/testsuite/lib/prune.exp | 7 ------- > 6 files changed, 21 insertions(+), 15 deletions(-) > > diff --git a/gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c > b/gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c > index ba8dce84f5d..2d9382014c4 100644 > --- a/gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c > +++ b/gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c > @@ -12,6 +12,8 @@ foo (int aaa, int bbb) > /* { dg-begin-multiline-output "" } > r += !aaa == bbb; > ^~ > + { dg-end-multiline-output "" } */ > +/* { dg-begin-multiline-output "" } > r += !aaa == bbb; > ^~~~ > ( ) > diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline- > events.c b/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c > index f08aee626a5..9134bb4781e 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c > +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c > @@ -12,11 +12,6 @@ int test (void *ptr) > WRAPPED_FREE (ptr); /* { dg-message "in expansion of macro > 'WRAPPED_FREE'" } */ > WRAPPED_FREE (ptr); /* { dg-message "in expansion of macro > 'WRAPPED_FREE'" } */ > > - /* Erase the spans indicating the header file > - (to avoid embedding path assumptions). */ > - /* { dg-regexp "\[^|\]+/malloc-macro.h:\[0-9\]+:\[0-9\]+:" } */ > - /* { dg-regexp "\[^|\]+/malloc-macro.h:\[0-9\]+:\[0-9\]+:" } */ > - > /* { dg-begin-multiline-output "" } > NN | #define WRAPPED_FREE(PTR) free(PTR) > | ^~~~~~~~~ > diff --git a/gcc/testsuite/gcc.dg/missing-header-fixit-5.c > b/gcc/testsuite/gcc.dg/missing-header-fixit-5.c > index 916033c689c..bf44feb24a9 100644 > --- a/gcc/testsuite/gcc.dg/missing-header-fixit-5.c > +++ b/gcc/testsuite/gcc.dg/missing-header-fixit-5.c > @@ -12,14 +12,18 @@ foo (char *m, int i) > /* { dg-begin-multiline-output "" } > 11 | if (isdigit (m[0])) > | ^~~~~~~ > + { dg-end-multiline-output "" } */ > + /* { dg-begin-multiline-output "" } > +++ |+#include <ctype.h> > 1 | > { dg-end-multiline-output "" } */ > { > return abs (i); /* { dg-warning "implicit declaration of > function" } */ > /* { dg-begin-multiline-output "" } > - 19 | return abs (i); > + 21 | return abs (i); > | ^~~ > + { dg-end-multiline-output "" } */ > + /* { dg-begin-multiline-output "" } > +++ |+#include <stdlib.h> > 1 | > { dg-end-multiline-output "" } */ > @@ -27,8 +31,10 @@ foo (char *m, int i) > else > putchar (m[0]); /* { dg-warning "implicit declaration of > function" } */ > /* { dg-begin-multiline-output "" } > - 28 | putchar (m[0]); > + 32 | putchar (m[0]); > | ^~~~~~~ > + { dg-end-multiline-output "" } */ > + /* { dg-begin-multiline-output "" } > +++ |+#include <stdio.h> > 1 | > { dg-end-multiline-output "" } */ > diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc- > dg.exp > index 4ed4233efff..6475cab46de 100644 > --- a/gcc/testsuite/lib/gcc-dg.exp > +++ b/gcc/testsuite/lib/gcc-dg.exp > @@ -364,6 +364,11 @@ proc gcc-dg-prune { system text } { > # Always remember to clear it in .exp file after executed all > tests. > global dg_runtest_extra_prunes > > + # Call into multiline.exp to handle any multiline output > directives. > + # This is done before the check for blank lines so that > multiline > + # output directives can have blank lines within them. > + set text [handle-multiline-outputs $text] > + > # Complain about blank lines in the output (PR other/69006) > global allow_blank_lines > if { !$allow_blank_lines } { > diff --git a/gcc/testsuite/lib/multiline.exp > b/gcc/testsuite/lib/multiline.exp > index 73621a0bdbd..4c25bb76f43 100644 > --- a/gcc/testsuite/lib/multiline.exp > +++ b/gcc/testsuite/lib/multiline.exp > @@ -139,7 +139,7 @@ proc dg-end-multiline-output { args } { > verbose "within dg-end-multiline-output: > multiline_expected_outputs: $multiline_expected_outputs" 3 > } > > -# Hook to be called by prune.exp's prune_gcc_output to > +# Hook to be called by gcc-dg.exp's gcc-dg-prune to > # look for the expected multiline outputs, pruning them, > # reporting PASS for those that are found, and FAIL for > # those that weren't found. > @@ -149,6 +149,11 @@ proc dg-end-multiline-output { args } { > proc handle-multiline-outputs { text } { > global multiline_expected_outputs > global testname_with_flags > + > + # If dg-enable-nn-line-numbers was provided, then obscure > source-margin > + # line numbers by converting them to "NN" form. > + set text [maybe-handle-nn-line-numbers $text] > + > set index 0 > foreach entry $multiline_expected_outputs { > verbose " entry: $entry" 3 > diff --git a/gcc/testsuite/lib/prune.exp > b/gcc/testsuite/lib/prune.exp > index cfe427c99ac..8d37b24e59b 100644 > --- a/gcc/testsuite/lib/prune.exp > +++ b/gcc/testsuite/lib/prune.exp > @@ -108,13 +108,6 @@ proc prune_gcc_output { text } { > # Many tests that use visibility will still pass on platforms > that don't support it. > regsub -all "(^|\n)\[^\n\]*lto1: warning: visibility attribute > not supported in this configuration; ignored\[^\n\]*" $text "" text > > - # If dg-enable-nn-line-numbers was provided, then obscure > source-margin > - # line numbers by converting them to "NN" form. > - set text [maybe-handle-nn-line-numbers $text] > - > - # Call into multiline.exp to handle any multiline output > directives. > - set text [handle-multiline-outputs $text] > - > #send_user "After:$text\n" > > return $text