summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-26 17:08:12 +0000
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-26 17:08:12 +0000
commit3752e5b1cc45b0f6b09b4958959582999b923e68 (patch)
treeb1f95695dbde83aeccf5ef984f65ac1d0f987b81
parent4176ce096510479b797ea78d60ec753e340b32dc (diff)
downloadgcc-3752e5b1cc45b0f6b09b4958959582999b923e68.tar.gz
PR other/69006: fix extra newlines after diagnostics
gcc/c-family/ChangeLog: PR other/69006 * c-opts.c (c_diagnostic_finalizer): Replace invocation of pp_newline_and_flush with pp_flush. gcc/cp/ChangeLog: PR other/69006 * error.c (print_instantiation_partial_context_line): Add missing newlines from output for the t == NULL case. (print_instantiation_partial_context): Remove call to pp_newline. gcc/ChangeLog: PR other/69006 * diagnostic-show-locus.c (layout::print_source_line): Replace call to pp_newline with call to layout::print_newline. (layout::print_annotation_line): Likewise. (layout::move_to_column): Likewise. (layout::print_any_fixits): After printing any fixits, print a trailing newline, if necessary. (layout::print_newline): New method, resetting any colorization before a newline. (diagnostic_show_locus): Move the pp_newline to before the early bailout. Remove dummy block enclosing the layout instance. * diagnostic.c (default_diagnostic_finalizer): Replace invocation of pp_newline_and_flush with pp_flush. (diagnostic_append_note): Delete use of pp_newline. (diagnostic_append_note_at_rich_loc): Delete. * diagnostic.h (diagnostic_append_note_at_rich_loc): Delete. * pretty-print.h (output_buffer_append_r): Reset buff->line_length when newline characters are added to the buffer. gcc/fortran/ChangeLog: PR other/69006 * error.c (gfc_diagnostic_starter): Delete use of pp_newline. gcc/testsuite/ChangeLog: PR other/69006 * g++.dg/ext/timevar1.C: Add dg-allow-blank-lines-in-output directive. * gcc.dg/plugin/diagnostic-test-show-locus-color.c: Update expected multiline output to reflect the colorization being disabled before newlines. * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (custom_diagnostic_finalizer): Replace call to pp_newline_and_flush with call to pp_flush. * gcc.dg/unroll-2.c: Add dg-allow-blank-lines-in-output directive. * gfortran.dg/implicit_class_1.f90: Likewise. * lib/gcc-dg.exp (allow_blank_lines): New global. (dg-allow-blank-lines-in-output): New procedure. (gcc-dg-prune): Complain about blank lines in the output, unless dg-allow-blank-lines-in-output was called. * lib/multiline.exp (_build_multiline_regex): Only support arbitrary followup text for non-blank-lines, not for blank lines. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232837 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog21
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-opts.c2
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/error.c5
-rw-r--r--gcc/diagnostic-show-locus.c61
-rw-r--r--gcc/diagnostic.c33
-rw-r--r--gcc/diagnostic.h4
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/error.c1
-rw-r--r--gcc/pretty-print.h6
-rw-r--r--gcc/testsuite/ChangeLog20
-rw-r--r--gcc/testsuite/g++.dg/ext/timevar1.C1
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c91
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c2
-rw-r--r--gcc/testsuite/gcc.dg/unroll-2.c4
-rw-r--r--gcc/testsuite/gfortran.dg/implicit_class_1.f901
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp24
-rw-r--r--gcc/testsuite/lib/multiline.exp10
19 files changed, 179 insertions, 125 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 71e96024dd4..f030101656c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,24 @@
+2016-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/69006
+ * diagnostic-show-locus.c (layout::print_source_line): Replace
+ call to pp_newline with call to layout::print_newline.
+ (layout::print_annotation_line): Likewise.
+ (layout::move_to_column): Likewise.
+ (layout::print_any_fixits): After printing any fixits, print a
+ trailing newline, if necessary.
+ (layout::print_newline): New method, resetting any colorization
+ before a newline.
+ (diagnostic_show_locus): Move the pp_newline to before the
+ early bailout. Remove dummy block enclosing the layout instance.
+ * diagnostic.c (default_diagnostic_finalizer): Replace invocation
+ of pp_newline_and_flush with pp_flush.
+ (diagnostic_append_note): Delete use of pp_newline.
+ (diagnostic_append_note_at_rich_loc): Delete.
+ * diagnostic.h (diagnostic_append_note_at_rich_loc): Delete.
+ * pretty-print.h (output_buffer_append_r): Reset buff->line_length
+ when newline characters are added to the buffer.
+
2016-01-26 Michael Matz <matz@suse.de>
* configure.ac (ac_cv_std_swap_in_utility): New test.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 7bd1d5d8fe7..fdc96eabd7c 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/69006
+ * c-opts.c (c_diagnostic_finalizer): Replace invocation of
+ pp_newline_and_flush with pp_flush.
+
2016-01-20 Martin Sebor <msebor@redhat.com>
PR c/69405
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index f2a3815f545..8cc28aff600 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -169,7 +169,7 @@ c_diagnostic_finalizer (diagnostic_context *context,
finalizer -- for tokens resulting from macro expansion. */
virt_loc_aware_diagnostic_finalizer (context, diagnostic);
pp_destroy_prefix (context->printer);
- pp_newline_and_flush (context->printer);
+ pp_flush (context->printer);
}
/* Common default settings for diagnostics. */
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ee5d0c0748d..b57030b67f7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2016-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/69006
+ * error.c (print_instantiation_partial_context_line): Add missing
+ newlines from output for the t == NULL case.
+ (print_instantiation_partial_context): Remove call to pp_newline.
+
2016-01-24 Patrick Palka <ppalka@gcc.gnu.org>
Revert:
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 370816c64e4..89a00a02a3a 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -3365,8 +3365,8 @@ print_instantiation_partial_context_line (diagnostic_context *context,
{
pp_verbatim (context->printer,
recursive_p
- ? _("recursively required from here")
- : _("required from here"));
+ ? _("recursively required from here\n")
+ : _("required from here\n"));
}
}
@@ -3450,7 +3450,6 @@ print_instantiation_partial_context (diagnostic_context *context,
}
print_instantiation_partial_context_line (context, NULL, loc,
/*recursive_p=*/false);
- pp_newline (context->printer);
}
/* Called from cp_thing to print the template context for an error. */
diff --git a/gcc/diagnostic-show-locus.c b/gcc/diagnostic-show-locus.c
index e32325486af..d9b6750339b 100644
--- a/gcc/diagnostic-show-locus.c
+++ b/gcc/diagnostic-show-locus.c
@@ -159,6 +159,8 @@ class layout
void print_any_fixits (int row, const rich_location *richloc);
private:
+ void print_newline ();
+
bool
get_state_at_point (/* Inputs. */
int row, int column,
@@ -574,7 +576,7 @@ layout::print_source_line (int row, line_bounds *lbounds_out)
pp_character (m_pp, c);
line++;
}
- pp_newline (m_pp);
+ print_newline ();
lbounds_out->m_first_non_ws = first_non_ws;
lbounds_out->m_last_non_ws = last_non_ws;
@@ -616,7 +618,7 @@ layout::print_annotation_line (int row, const line_bounds lbounds)
pp_character (m_pp, ' ');
}
}
- pp_newline (m_pp);
+ print_newline ();
}
/* If there are any fixit hints on source line ROW within RICHLOC, print them.
@@ -684,6 +686,18 @@ layout::print_any_fixits (int row, const rich_location *richloc)
}
}
}
+
+ /* Add a trailing newline, if necessary. */
+ move_to_column (&column, 0);
+}
+
+/* Disable any colorization and emit a newline. */
+
+void
+layout::print_newline ()
+{
+ m_colorizer.set_normal_text ();
+ pp_newline (m_pp);
}
/* Return true if (ROW/COLUMN) is within a range of the layout.
@@ -778,7 +792,7 @@ layout::move_to_column (int *column, int dest_column)
/* Start a new line if we need to. */
if (*column > dest_column)
{
- pp_newline (m_pp);
+ print_newline ();
*column = 0;
}
@@ -798,6 +812,8 @@ void
diagnostic_show_locus (diagnostic_context * context,
const diagnostic_info *diagnostic)
{
+ pp_newline (context->printer);
+
if (!context->show_caret
|| diagnostic_location (diagnostic, 0) <= BUILTINS_LOCATION
|| diagnostic_location (diagnostic, 0) == context->last_location)
@@ -805,34 +821,23 @@ diagnostic_show_locus (diagnostic_context * context,
context->last_location = diagnostic_location (diagnostic, 0);
- pp_newline (context->printer);
-
const char *saved_prefix = pp_get_prefix (context->printer);
pp_set_prefix (context->printer, NULL);
- {
- layout layout (context, diagnostic);
- int last_line = layout.get_last_line ();
- for (int row = layout.get_first_line ();
- row <= last_line;
- row++)
- {
- /* Print the source line, followed by an annotation line
- consisting of any caret/underlines, then any fixits.
- If the source line can't be read, print nothing. */
- line_bounds lbounds;
- if (layout.print_source_line (row, &lbounds))
- {
- layout.print_annotation_line (row, lbounds);
- layout.print_any_fixits (row, diagnostic->richloc);
- }
- }
-
- /* The closing scope here leads to the dtor for layout and thus
- colorizer being called here, which affects the precise
- place where colorization is turned off in the unittest
- for colorized output. */
- }
+ layout layout (context, diagnostic);
+ int last_line = layout.get_last_line ();
+ for (int row = layout.get_first_line (); row <= last_line; row++)
+ {
+ /* Print the source line, followed by an annotation line
+ consisting of any caret/underlines, then any fixits.
+ If the source line can't be read, print nothing. */
+ line_bounds lbounds;
+ if (layout.print_source_line (row, &lbounds))
+ {
+ layout.print_annotation_line (row, lbounds);
+ layout.print_any_fixits (row, diagnostic->richloc);
+ }
+ }
pp_set_prefix (context->printer, saved_prefix);
}
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index effb8f2a9be..f661b57db5a 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -546,7 +546,7 @@ default_diagnostic_finalizer (diagnostic_context *context,
{
diagnostic_show_locus (context, diagnostic);
pp_destroy_prefix (context->printer);
- pp_newline_and_flush (context->printer);
+ pp_flush (context->printer);
}
/* Interface to specify diagnostic kind overrides. Returns the
@@ -879,37 +879,6 @@ diagnostic_append_note (diagnostic_context *context,
saved_prefix = pp_get_prefix (context->printer);
pp_set_prefix (context->printer,
diagnostic_build_prefix (context, &diagnostic));
- pp_newline (context->printer);
- pp_format (context->printer, &diagnostic.message);
- pp_output_formatted_text (context->printer);
- pp_destroy_prefix (context->printer);
- pp_set_prefix (context->printer, saved_prefix);
- diagnostic_show_locus (context, &diagnostic);
- va_end (ap);
-}
-
-/* Same as diagnostic_append_note, but at RICHLOC. */
-
-void
-diagnostic_append_note_at_rich_loc (diagnostic_context *context,
- rich_location *richloc,
- const char * gmsgid, ...)
-{
- diagnostic_info diagnostic;
- va_list ap;
- const char *saved_prefix;
-
- va_start (ap, gmsgid);
- diagnostic_set_info (&diagnostic, gmsgid, &ap, richloc, DK_NOTE);
- if (context->inhibit_notes_p)
- {
- va_end (ap);
- return;
- }
- saved_prefix = pp_get_prefix (context->printer);
- pp_set_prefix (context->printer,
- diagnostic_build_prefix (context, &diagnostic));
- pp_newline (context->printer);
pp_format (context->printer, &diagnostic.message);
pp_output_formatted_text (context->printer);
pp_destroy_prefix (context->printer);
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 2cb6270ef21..7cc5cff185b 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -293,10 +293,6 @@ extern void diagnostic_set_info_translated (diagnostic_info *, const char *,
ATTRIBUTE_GCC_DIAG(2,0);
extern void diagnostic_append_note (diagnostic_context *, location_t,
const char *, ...) ATTRIBUTE_GCC_DIAG(3,4);
-extern void diagnostic_append_note_at_rich_loc (diagnostic_context *,
- rich_location *,
- const char *, ...)
- ATTRIBUTE_GCC_DIAG(3,4);
#endif
extern char *diagnostic_build_prefix (diagnostic_context *, const diagnostic_info *);
void default_diagnostic_starter (diagnostic_context *, diagnostic_info *);
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5853ddf374c..a137e919fe4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/69006
+ * error.c (gfc_diagnostic_starter): Delete use of pp_newline.
+
2016-01-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/69397
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c
index 7388706d583..e7f4ba7dac0 100644
--- a/gcc/fortran/error.c
+++ b/gcc/fortran/error.c
@@ -1096,7 +1096,6 @@ gfc_diagnostic_starter (diagnostic_context *context,
/* Fortran uses an empty line between locus and caret line. */
pp_newline (context->printer);
diagnostic_show_locus (context, diagnostic);
- pp_newline (context->printer);
/* If the caret line was shown, the prefix does not contain the
locus. */
pp_set_prefix (context->printer, kind_prefix);
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index 6a44fbc5b7e..f49f35ac610 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -125,7 +125,11 @@ output_buffer_append_r (output_buffer *buff, const char *start, int length)
{
gcc_checking_assert (start);
obstack_grow (buff->obstack, start, length);
- buff->line_length += length;
+ for (int i = 0; i < length; i++)
+ if (start[i] == '\n')
+ buff->line_length = 0;
+ else
+ buff->line_length++;
}
/* Return a pointer to the last character emitted in the
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3d0cc309eef..18aa8af737f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,23 @@
+2016-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/69006
+ * g++.dg/ext/timevar1.C: Add dg-allow-blank-lines-in-output
+ directive.
+ * gcc.dg/plugin/diagnostic-test-show-locus-color.c: Update
+ expected multiline output to reflect the colorization being
+ disabled before newlines.
+ * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
+ (custom_diagnostic_finalizer): Replace call to
+ pp_newline_and_flush with call to pp_flush.
+ * gcc.dg/unroll-2.c: Add dg-allow-blank-lines-in-output directive.
+ * gfortran.dg/implicit_class_1.f90: Likewise.
+ * lib/gcc-dg.exp (allow_blank_lines): New global.
+ (dg-allow-blank-lines-in-output): New procedure.
+ (gcc-dg-prune): Complain about blank lines in the output, unless
+ dg-allow-blank-lines-in-output was called.
+ * lib/multiline.exp (_build_multiline_regex): Only support
+ arbitrary followup text for non-blank-lines, not for blank lines.
+
2016-01-26 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/69483
diff --git a/gcc/testsuite/g++.dg/ext/timevar1.C b/gcc/testsuite/g++.dg/ext/timevar1.C
index 0d2d3f5f31d..a48f8ba3705 100644
--- a/gcc/testsuite/g++.dg/ext/timevar1.C
+++ b/gcc/testsuite/g++.dg/ext/timevar1.C
@@ -1,5 +1,6 @@
// PR c++/52248
// { dg-options "-ftime-report" }
+// { dg-allow-blank-lines-in-output 1 }
// { dg-prune-output "wall" }
// { dg-prune-output "times" }
// { dg-prune-output "TOTAL" }
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c
index 199e0b20d61..a59025870a6 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c
@@ -15,8 +15,7 @@ void test_simple (void)
/* { dg-begin-multiline-output "" }
myvar = myvar.x;
- ~~~~~^~
-
+ ~~~~~^~
{ dg-end-multiline-output "" } */
#endif
}
@@ -28,8 +27,7 @@ void test_simple_2 (void)
/* { dg-begin-multiline-output "" }
x = first_function () + second_function ();
- ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~
-
+ ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -42,11 +40,10 @@ void test_multiline (void)
+ second_function ()); /* { dg-warning "test" } */
/* { dg-begin-multiline-output "" }
- x = (first_function ()
-  ~~~~~~~~~~~~~~~~~
- + second_function ());
- ^ ~~~~~~~~~~~~~~~~~~
-
+ x = (first_function ()
+ ~~~~~~~~~~~~~~~~~
+ + second_function ());
+ ^ ~~~~~~~~~~~~~~~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -67,29 +64,28 @@ void test_many_lines (void)
magna, aliqua));
/* { dg-begin-multiline-output "" }
- x = (first_function_with_a_very_long_name (lorem, ipsum, dolor, sit, amet,
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  consectetur, adipiscing, elit,
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  sed, eiusmod, tempor,
-  ~~~~~~~~~~~~~~~~~~~~~
-  incididunt, ut, labore, et,
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  dolore, magna, aliqua)
-  ~~~~~~~~~~~~~~~~~~~~~~
- + second_function_with_a_very_long_name (lorem, ipsum, dolor, sit,
-  ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  amet, consectetur,
-  ~~~~~~~~~~~~~~~~~~
-  adipiscing, elit, sed,
-  ~~~~~~~~~~~~~~~~~~~~~~
-  eiusmod, tempor, incididunt,
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ut, labore, et, dolore,
-  ~~~~~~~~~~~~~~~~~~~~~~~
-  magna, aliqua));
- ~~~~~~~~~~~~~~
-
+ x = (first_function_with_a_very_long_name (lorem, ipsum, dolor, sit, amet,
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  consectetur, adipiscing, elit,
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  sed, eiusmod, tempor,
+ ~~~~~~~~~~~~~~~~~~~~~
+  incididunt, ut, labore, et,
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  dolore, magna, aliqua)
+ ~~~~~~~~~~~~~~~~~~~~~~
+ + second_function_with_a_very_long_name (lorem, ipsum, dolor, sit,
+ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  amet, consectetur,
+ ~~~~~~~~~~~~~~~~~~
+  adipiscing, elit, sed,
+ ~~~~~~~~~~~~~~~~~~~~~~
+  eiusmod, tempor, incididunt,
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ut, labore, et, dolore,
+ ~~~~~~~~~~~~~~~~~~~~~~~
+  magna, aliqua));
+ ~~~~~~~~~~~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -100,8 +96,7 @@ void test_richloc_from_proper_range (void)
float f = 98.6f; /* { dg-warning "test" } */
/* { dg-begin-multiline-output "" }
float f = 98.6f;
- ^~~~~
-
+ ^~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -112,8 +107,7 @@ void test_caret_within_proper_range (void)
float f = foo * bar; /* { dg-warning "17: test" } */
/* { dg-begin-multiline-output "" }
float f = foo * bar;
- ~~~~^~~~~
-
+ ~~~~^~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -124,8 +118,7 @@ void test_very_wide_line (void)
float f = foo * bar; /* { dg-warning "95: test" } */
/* { dg-begin-multiline-output "" }
float f = foo * bar;
- ~~~~^~~~~
-
+ ~~~~^~~~~
{ dg-end-multiline-output "" } */
#endif
}
@@ -136,8 +129,7 @@ void test_multiple_carets (void)
x = x + y /* { dg-warning "8: test" } */
/* { dg-begin-multiline-output "" }
x = x + y
- A B
-
+ A B
{ dg-end-multiline-output "" } */
#endif
}
@@ -149,10 +141,9 @@ void test_caret_on_leading_whitespace (void)
y = 5 /* { dg-warning "6: test" } */
/* { dg-begin-multiline-output "" }
ASSOCIATE (y => x)
- 2
-  y = 5
- 1
-
+ 2
+  y = 5
+ 1
{ dg-end-multiline-output "" } */
#endif
}
@@ -166,8 +157,8 @@ void test_fixit_insert (void)
int a[2][2] = { 0, 1 , 2, 3 }; /* { dg-warning "insertion hints" } */
/* { dg-begin-multiline-output "" }
int a[2][2] = { 0, 1 , 2, 3 };
- ^~~~
- { }
+ ^~~~
+ { }
{ dg-end-multiline-output "" } */
#endif
}
@@ -180,8 +171,8 @@ void test_fixit_remove (void)
int a;; /* { dg-warning "example of a removal hint" } */
/* { dg-begin-multiline-output "" }
int a;;
- ^
- -
+ ^
+ -
{ dg-end-multiline-output "" } */
#endif
}
@@ -194,8 +185,8 @@ void test_fixit_replace (void)
gtk_widget_showall (dlg); /* { dg-warning "example of a replacement hint" } */
/* { dg-begin-multiline-output "" }
gtk_widget_showall (dlg);
- ^~~~~~~~~~~~~~~~~~
- gtk_widget_show_all
+ ^~~~~~~~~~~~~~~~~~
+ gtk_widget_show_all
{ dg-end-multiline-output "" } */
#endif
}
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
index 02a2aef3d4c..b4f12ba68c1 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
@@ -137,7 +137,7 @@ custom_diagnostic_finalizer (diagnostic_context *context,
pp_show_color (context->printer) = old_show_color;
pp_destroy_prefix (context->printer);
- pp_newline_and_flush (context->printer);
+ pp_flush (context->printer);
}
/* Exercise the diagnostic machinery to emit various warnings,
diff --git a/gcc/testsuite/gcc.dg/unroll-2.c b/gcc/testsuite/gcc.dg/unroll-2.c
index 7c9495d0261..05a141056d7 100644
--- a/gcc/testsuite/gcc.dg/unroll-2.c
+++ b/gcc/testsuite/gcc.dg/unroll-2.c
@@ -1,6 +1,10 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-cunrolli-details=stderr -fno-peel-loops -fno-tree-vrp -fdisable-tree-cunroll -fenable-tree-cunrolli" } */
+/* Blank lines can occur in the output of
+ -fdump-tree-cunrolli-details=stderr. */
+/* { dg-allow-blank-lines-in-output 1 } */
+
unsigned a[100], b[100];
inline void bar()
{
diff --git a/gcc/testsuite/gfortran.dg/implicit_class_1.f90 b/gcc/testsuite/gfortran.dg/implicit_class_1.f90
index 64193daa161..2ab90405eb0 100644
--- a/gcc/testsuite/gfortran.dg/implicit_class_1.f90
+++ b/gcc/testsuite/gfortran.dg/implicit_class_1.f90
@@ -8,6 +8,7 @@
! segfault is working correctly. No cleanup needed, because the dump
! goes to stdout.
! { dg-options "-fdump-fortran-original" }
+! { dg-allow-blank-lines-in-output 1 }
! { dg-prune-output "Namespace:.*-{42}" }
program upimp
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index c0033283313..3dd85645395 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -310,6 +310,19 @@ proc gcc-dg-test { prog do_what extra_tool_flags } {
return [gcc-dg-test-1 gcc_target_compile $prog $do_what $extra_tool_flags]
}
+# Global: should blank lines be allowed in the output?
+# By default, they should not be. (PR other/69006)
+# However, there are some ways for them to validly occur.
+set allow_blank_lines 0
+
+# A command for use by testcases to mark themselves as expecting
+# blank lines in the output.
+
+proc dg-allow-blank-lines-in-output { args } {
+ global allow_blank_lines
+ set allow_blank_lines 1
+}
+
proc gcc-dg-prune { system text } {
global additional_prunes
@@ -317,6 +330,17 @@ proc gcc-dg-prune { system text } {
# Always remember to clear it in .exp file after executed all tests.
global dg_runtest_extra_prunes
+ # Complain about blank lines in the output (PR other/69006)
+ global allow_blank_lines
+ if { !$allow_blank_lines } {
+ set num_blank_lines [llength [regexp -all -inline "\n\n" $text]]
+ if { $num_blank_lines } {
+ global testname_with_flags
+ fail "$testname_with_flags $num_blank_lines blank line(s) in output"
+ }
+ set allow_blank_lines 0
+ }
+
set text [prune_gcc_output $text]
foreach p "$additional_prunes $dg_runtest_extra_prunes" {
diff --git a/gcc/testsuite/lib/multiline.exp b/gcc/testsuite/lib/multiline.exp
index fd7affcfafd..a2e963e555f 100644
--- a/gcc/testsuite/lib/multiline.exp
+++ b/gcc/testsuite/lib/multiline.exp
@@ -224,10 +224,12 @@ proc _build_multiline_regex { multiline index } {
set rexp "${rexp}\\|"
} else {
# Assume that we have a quoted source line.
- # Support arbitrary followup text on each line,
- # to deal with comments containing containing DejaGnu
- # directives.
- append rexp ".*"
+ if {![string equal "" $line] } {
+ # Support arbitrary followup text on each non-empty line,
+ # to deal with comments containing containing DejaGnu
+ # directives.
+ append rexp ".*"
+ }
}
append rexp "\n"
}