From: Jeff Law Date: Fri, 29 Oct 2021 15:30:15 +0000 (-0400) Subject: Avoid overly-greedy match in dejagnu regexp. X-Git-Tag: basepoints/gcc-13~3524 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=14c7757e9b751781360737f53b71f851fc356d3d;p=thirdparty%2Fgcc.git Avoid overly-greedy match in dejagnu regexp. Occasionally I've been seeing failures with the multi-line diagnostics. It's never been clear what's causing the spurious failures, though I have long suspected a greedy regexp match. It happened again yesterday with a local change that in no way should affect diagnostics, so I finally went searching and found that sure enough the multi-line diagnostics had a ".*" in their regexp. According to the comments, the .* is primarily to catch any dg directives that may appear -- ie it should eat to EOL, but not multiple lines. But a .* can indeed match a newline and cause it to eat multiple lines. The fix is simple. [^\r\n]* will eat to EOL, but not further. Regression tested on x86_64 and on our internal target. gcc/testsuite * lib/multiline.exp (_build_multiline_regex): Use a better regexp than .* to match up to EOL. --- diff --git a/gcc/testsuite/lib/multiline.exp b/gcc/testsuite/lib/multiline.exp index 0e151b6d2224..86387f8209b8 100644 --- a/gcc/testsuite/lib/multiline.exp +++ b/gcc/testsuite/lib/multiline.exp @@ -331,7 +331,7 @@ proc _build_multiline_regex { multiline index } { # Support arbitrary followup text on each non-empty line, # to deal with comments containing containing DejaGnu # directives. - append rexp ".*" + append rexp "\[^\\n\\r\]*" } } append rexp "\n"