[3/5,v2,abidiff] Eliminate some unnecessary blank lines in diff output.

Message ID 20200316131025.261522-1-gprocida@google.com
State Committed
Headers
Series None |

Commit Message

Giuliano Procida March 16, 2020, 1:10 p.m. UTC
  v2: More code simplification. Tests unchanged.

There is distributed responsibility for horizontal and vertical
whitespace in the reporting code with indent and new line control
information being manipulated by and passed in and out of functions.
Occasionally, this information is ignored or incorrect and the code
tends to err on the side of more rather than fewer new lines.

The outcome is that abidiff output sometimes contains extra blank
lines which can be confusing.

This patch eliminates some of the more obvious cases:

   - after data member deletions
   - in enumerator change lists
   - after "type size hasn't changed"
   - before listing impacted interfaces

A lot of passing of "new line needed" booleans between functions has
been eliminated in the process.

The patch cleans up the reporting of data members. The code will
either emit indentation, a short description and a new line or do
nothing at all.

The patch also removes some stray location reporting code for array
diffs which would have produced some oddly placed output. I could not
get this code to trigger as loc = decl->get_location() was never
present on the array decls in question.

	* src/abg-default-reporter.cc (report): In the type_decl_diff,
	enum_diff, array_diff, class_diff, union_diff and var_diff
	overrides, simplify new line logic which no longer needs to be
	threaded through report_name_size_and_alignment_changes. In
	the distinct_diff override, simplify new line logic which no
	longer needs to be threaded through
	report_size_and_alignment_changes. In the enum_diff override,
	emit just one blank line after each enum. In the array_diff
	override, remove stray location reporting which doesn't appear
	to ever trigger; fix new line logic. In the
	class_or_union_diff override, simplify new line logic for
	deleted members; pass indentation to represent_data_member.
	* src/abg-leaf-reporter.cc (report): In the array_diff,
	class_diff, union_diff and var_diff overrides, simplify new
	line logic which no longer needs to be threaded through
	report_name_size_and_alignment_changes. In the distinct_diff
	override, simplify new line logic which no longer needs to be
	threaded through report_size_and_alignment_changes. In the
	array_diff override, remove stray location reporting which
	doesn't appear to ever trigger; fix new line handling. In the
	class_or_union_diff override, simplify new line logic for
	deleted members; pass indentation to represent_data_member.
	In the corpus_diff override, tabify source indentation.
	* src/abg-reporter-priv.cc (represent_data_member): Handle
	indentation; fix new line logic.
	(report_size_and_alignment_changes): Fix new line logic
	for "type size hasn't changed" message; simplify new line
	logic and replace local bool n with argument bool nl for
	clarity.
	(report_size_and_alignment_changes): Remove bool nl argument
	and associated code as it had become always false; take
	responsibility for emitting terminating new lines and change
	return type to void.
	(report_name_size_and_alignment_changes): Fix new line logic;
	remove bool nl argument and associated code as it had become
	always false; take responsibility for emitting terminating new
	lines and change return type to void.
	(maybe_report_interfaces_impacted_by_diff) In both overrides,
	remove new line prefix code and new_line_prefix argument.
	* src/abg-reporter-priv.h (represent_data_member): Add indent
	argument.
	(report_size_and_alignment_changes) Remove bool nl argument;
	change return type to void.
	(report_name_size_and_alignment_changes) Remove bool nl
	argument; change return type to void.
	(maybe_report_interfaces_impacted_by_diff) In both overrides,
	remove new_line_prefix argument.
	* tests/data/test-*/*report*.txt: Remove some blank lines.

Signed-off-by: Giuliano Procida <gprocida@google.com>
---
 src/abg-default-reporter.cc                   |  85 ++++-------
 src/abg-leaf-reporter.cc                      | 134 ++++++++----------
 src/abg-reporter-priv.cc                      |  73 +++-------
 src/abg-reporter-priv.h                       |  19 ++-
 .../test5-fn-changed-report-0.txt             |   1 -
 .../test5-fn-changed-report-1.txt             |   1 -
 .../test6-var-changed-report-0.txt            |   1 -
 .../test6-var-changed-report-1.txt            |   1 -
 .../test7-fn-changed-report-0.txt             |   1 -
 .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
 .../test-loc-with-locs-report.txt             |   1 -
 .../test-loc-without-locs-report.txt          |   1 -
 .../test-abidiff/test-PR18791-report0.txt     |   2 -
 tests/data/test-abidiff/test-enum0-report.txt |   1 -
 tests/data/test-abidiff/test-enum1-report.txt |   1 -
 .../data/test-abidiff/test-struct1-report.txt |   1 -
 .../PR25058-liblttng-ctl-report-1.txt         |   5 -
 tests/data/test-diff-dwarf/test13-report.txt  |   1 -
 .../test-diff-dwarf/test38-union-report-0.txt |   1 -
 .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
 .../test42-PR21296-clanggcc-report0.txt       |   1 -
 .../test43-PR22913-report-0.txt               |   1 -
 tests/data/test-diff-filter/test10-report.txt |   1 -
 tests/data/test-diff-filter/test18-report.txt |   1 -
 ...st23-redundant-fn-parm-change-report-0.txt |   2 -
 .../test30-pr18904-rvalueref-report0.txt      |   8 --
 .../test30-pr18904-rvalueref-report1.txt      |   8 --
 .../test30-pr18904-rvalueref-report2.txt      |   8 --
 .../test35-pr18754-no-added-syms-report-0.txt |   8 --
 .../data/test-diff-filter/test36-report-0.txt |   3 -
 .../test42-leaf-report-output-0.txt           |   1 -
 tests/data/test-diff-filter/test7-report.txt  |   1 -
 ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
 .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 -------------
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
 ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
 ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
 .../test10-changed-parm-c-report-0.txt        |   3 -
 .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
 .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
 .../test41-enumerator-changes-report-0.txt    |   2 -
 44 files changed, 113 insertions(+), 391 deletions(-)
  

Comments

Dodji Seketeli March 16, 2020, 4:10 p.m. UTC | #1
Hello Giuliano,

Giuliano Procida <gprocida@google.com> a ?crit:

> v2: More code simplification. Tests unchanged.
>
> There is distributed responsibility for horizontal and vertical
> whitespace in the reporting code with indent and new line control
> information being manipulated by and passed in and out of functions.
> Occasionally, this information is ignored or incorrect and the code
> tends to err on the side of more rather than fewer new lines.
>
> The outcome is that abidiff output sometimes contains extra blank
> lines which can be confusing.
>
> This patch eliminates some of the more obvious cases:
>
>    - after data member deletions
>    - in enumerator change lists
>    - after "type size hasn't changed"
>    - before listing impacted interfaces
>
> A lot of passing of "new line needed" booleans between functions has
> been eliminated in the process.
>
> The patch cleans up the reporting of data members. The code will
> either emit indentation, a short description and a new line or do
> nothing at all.
>
> The patch also removes some stray location reporting code for array
> diffs which would have produced some oddly placed output. I could not
> get this code to trigger as loc = decl->get_location() was never
> present on the array decls in question.
>
> 	* src/abg-default-reporter.cc (report): In the type_decl_diff,
> 	enum_diff, array_diff, class_diff, union_diff and var_diff
> 	overrides, simplify new line logic which no longer needs to be
> 	threaded through report_name_size_and_alignment_changes. In
> 	the distinct_diff override, simplify new line logic which no
> 	longer needs to be threaded through
> 	report_size_and_alignment_changes. In the enum_diff override,
> 	emit just one blank line after each enum. In the array_diff
> 	override, remove stray location reporting which doesn't appear
> 	to ever trigger; fix new line logic. In the
> 	class_or_union_diff override, simplify new line logic for
> 	deleted members; pass indentation to represent_data_member.
> 	* src/abg-leaf-reporter.cc (report): In the array_diff,
> 	class_diff, union_diff and var_diff overrides, simplify new
> 	line logic which no longer needs to be threaded through
> 	report_name_size_and_alignment_changes. In the distinct_diff
> 	override, simplify new line logic which no longer needs to be
> 	threaded through report_size_and_alignment_changes. In the
> 	array_diff override, remove stray location reporting which
> 	doesn't appear to ever trigger; fix new line handling. In the
> 	class_or_union_diff override, simplify new line logic for
> 	deleted members; pass indentation to represent_data_member.
> 	In the corpus_diff override, tabify source indentation.
> 	* src/abg-reporter-priv.cc (represent_data_member): Handle
> 	indentation; fix new line logic.
> 	(report_size_and_alignment_changes): Fix new line logic
> 	for "type size hasn't changed" message; simplify new line
> 	logic and replace local bool n with argument bool nl for
> 	clarity.
> 	(report_size_and_alignment_changes): Remove bool nl argument
> 	and associated code as it had become always false; take
> 	responsibility for emitting terminating new lines and change
> 	return type to void.
> 	(report_name_size_and_alignment_changes): Fix new line logic;
> 	remove bool nl argument and associated code as it had become
> 	always false; take responsibility for emitting terminating new
> 	lines and change return type to void.
> 	(maybe_report_interfaces_impacted_by_diff) In both overrides,
> 	remove new line prefix code and new_line_prefix argument.
> 	* src/abg-reporter-priv.h (represent_data_member): Add indent
> 	argument.
> 	(report_size_and_alignment_changes) Remove bool nl argument;
> 	change return type to void.
> 	(report_name_size_and_alignment_changes) Remove bool nl
> 	argument; change return type to void.
> 	(maybe_report_interfaces_impacted_by_diff) In both overrides,
> 	remove new_line_prefix argument.
> 	* tests/data/test-*/*report*.txt: Remove some blank lines.


Whoah, thanks a lot for this great work.  And many thanks to Matthias
for the review.

What can I say other than, Well, applied to master.

Thanks!
  

Patch

diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
index 3bfdfbc4..f6067909 100644
--- a/src/abg-default-reporter.cc
+++ b/src/abg-default-reporter.cc
@@ -55,33 +55,25 @@  default_reporter::report(const type_decl_diff& d,
 
   string name = f->get_pretty_representation();
 
-  bool n = report_name_size_and_alignment_changes(f, s, d.context(),
-						  out, indent,
-						  /*new line=*/false);
+  report_name_size_and_alignment_changes(f, s, d.context(),
+					 out, indent);
 
   if (f->get_visibility() != s->get_visibility())
     {
-      if (n)
-	out << "\n";
       out << indent
 	  << "visibility changed from '"
-	  << f->get_visibility() << "' to '" << s->get_visibility();
-      n = true;
+	  << f->get_visibility() << "' to '" << s->get_visibility()
+	  << "\n";
     }
 
   if (f->get_linkage_name() != s->get_linkage_name())
     {
-      if (n)
-	out << "\n";
       out << indent
 	  << "mangled name changed from '"
 	  << f->get_linkage_name() << "' to "
-	  << s->get_linkage_name();
-      n = true;
+	  << s->get_linkage_name()
+	  << "\n";
     }
-
-  if (n)
-    out << "\n";
 }
 
 /// Report the differences between the two enums.
@@ -106,10 +98,8 @@  default_reporter::report(const enum_diff& d, ostream& out,
 
   enum_type_decl_sptr first = d.first_enum(), second = d.second_enum();
 
-  if (report_name_size_and_alignment_changes(first, second, d.context(),
-					     out, indent,
-					     /*start_with_num_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second, d.context(),
+					 out, indent);
   maybe_report_diff_for_member(first, second, d.context(), out, indent);
 
   //underlying type
@@ -130,16 +120,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_deleted_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_deleted_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->get_qualified_name()
 	      << "' value '"
 	      << i->get_value()
 	      << "'";
+	  out << "\n";
 	}
-      out << "\n\n";
     }
   if (numins)
     {
@@ -151,16 +139,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_inserted_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_inserted_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->get_qualified_name()
 	      << "' value '"
 	      << i->get_value()
 	      << "'";
+	  out << "\n";
 	}
-      out << "\n\n";
     }
   if (numchanges)
     {
@@ -173,8 +159,6 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_changed_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_changed_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->first.get_qualified_name()
@@ -182,13 +166,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	      << i->first.get_value() << "' to '"
 	      << i->second.get_value() << "'";
 	  report_loc_info(second, *d.context(), out);
+	  out << "\n";
 	}
-      out << "\n\n";
     }
 
+  out << "\n";
+
   if (d.context()->show_leaf_changes_only())
-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
-					     /*new_line_prefix=*/false);
+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
 
   d.reported_once(true);
 }
@@ -392,7 +377,7 @@  default_reporter::report(const pointer_diff& d, ostream& out,
 	: string("void");
 
       out << indent
-	  << "in pointed to type '" <<  repr << "'";
+	  << "in pointed to type '" << repr << "'";
       report_loc_info(dif->second_subject(), *d.context(), out);
       out << ":\n";
       dif->report(out, indent + "  ");
@@ -676,9 +661,7 @@  default_reporter::report(const array_diff& d, ostream& out,
   report_name_size_and_alignment_changes(d.first_array(),
 					 d.second_array(),
 					 d.context(),
-					 out, indent,
-					 /*new line=*/false);
-  report_loc_info(d.second_array(), *d.context(), out);
+					 out, indent);
 }
 
 /// Generates a report for an intance of @ref base_diff.
@@ -1014,7 +997,6 @@  default_reporter::report(const class_or_union_diff& d,
 	  sort_data_members
 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
 	     sorted_dms);
-	  bool emitted = false;
 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
 	       i != sorted_dms.end();
 	       ++i)
@@ -1024,14 +1006,8 @@  default_reporter::report(const class_or_union_diff& d,
 	      ABG_ASSERT(data_mem);
 	      if (get_member_is_static(data_mem))
 		continue;
-	      if (emitted)
-		out << "\n";
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
-	      emitted = true;
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
-	  if (emitted)
-	    out << "\n";
 	}
 
       //report insertions
@@ -1052,8 +1028,7 @@  default_reporter::report(const class_or_union_diff& d,
 	      var_decl_sptr data_mem =
 		dynamic_pointer_cast<var_decl>(*i);
 	      ABG_ASSERT(data_mem);
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
 	}
 
@@ -1327,10 +1302,8 @@  default_reporter::report(const class_diff& d, ostream& out,
   class_decl_sptr first = d.first_class_decl(),
     second = d.second_class_decl();
 
-  if (report_name_size_and_alignment_changes(first, second, d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second, d.context(),
+					 out, indent);
 
   const diff_context_sptr& ctxt = d.context();
   maybe_report_diff_for_member(first, second, ctxt, out, indent);
@@ -1446,10 +1419,8 @@  default_reporter::report(const union_diff& d, ostream& out,
   // Now report the changes about the differents parts of the type.
   union_decl_sptr first = d.first_union_decl(), second = d.second_union_decl();
 
-  if (report_name_size_and_alignment_changes(first, second, d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second, d.context(),
+					 out, indent);
 
   maybe_report_diff_for_member(first, second,d. context(), out, indent);
 
@@ -1512,9 +1483,7 @@  default_reporter::report(const distinct_diff& d, ostream& out,
   if (diff)
     diff->report(out, indent + "  ");
   else
-    if (report_size_and_alignment_changes(f, s, d.context(), out, indent,
-					  /*start_with_new_line=*/false))
-      out << "\n";
+    report_size_and_alignment_changes(f, s, d.context(), out, indent);
 }
 
 /// Serialize a report of the changes encapsulated in the current
@@ -1710,11 +1679,9 @@  default_reporter::report(const var_diff& d, ostream& out,
   decl_base_sptr first = d.first_var(), second = d.second_var();
   string n = first->get_pretty_representation();
 
-  if (report_name_size_and_alignment_changes(first, second,
-					     d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second,
+					 d.context(),
+					 out, indent);
 
   maybe_report_diff_for_symbol(d.first_var()->get_symbol(),
 			       d.second_var()->get_symbol(),
diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
index 6972d013..ddc84352 100644
--- a/src/abg-leaf-reporter.cc
+++ b/src/abg-leaf-reporter.cc
@@ -78,7 +78,7 @@  report_diffs(const reporter_base& r,
 
 	  string n = (*i)->first_subject()->get_pretty_representation();
 
-	  out << indent << "'" << n ;
+	  out << indent << "'" << n;
 
 	  report_loc_info((*i)->first_subject(),
 			  *(*i)->context(), out);
@@ -428,8 +428,7 @@  leaf_reporter::report(const array_diff& d,
   report_name_size_and_alignment_changes(d.first_array(),
 					 d.second_array(),
 					 d.context(),
-					 out, indent,
-					 /*new line=*/false);
+					 out, indent);
 
   diff_sptr dif = d.element_type_diff();
   if (diff_to_be_reported(dif.get()))
@@ -441,8 +440,6 @@  leaf_reporter::report(const array_diff& d,
       dif->report(out, indent + "  ");
     }
 
-  report_loc_info(d.second_array(), *d.context(), out);
-
   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
 }
 
@@ -592,7 +589,6 @@  leaf_reporter::report(const class_or_union_diff& d,
 	  sort_data_members
 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
 	     sorted_dms);
-	  bool emitted = false;
 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
 	       i != sorted_dms.end();
 	       ++i)
@@ -602,14 +598,8 @@  leaf_reporter::report(const class_or_union_diff& d,
 	      ABG_ASSERT(data_mem);
 	      if (get_member_is_static(data_mem))
 		continue;
-	      if (emitted)
-		out << "\n";
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
-	      emitted = true;
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
-	  if (emitted)
-	    out << "\n";
 	}
 
       //report insertions
@@ -630,8 +620,7 @@  leaf_reporter::report(const class_or_union_diff& d,
 	      var_decl_sptr data_mem =
 		dynamic_pointer_cast<var_decl>(*i);
 	      ABG_ASSERT(data_mem);
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
 	}
 
@@ -716,10 +705,8 @@  leaf_reporter::report(const class_diff& d,
   class_decl_sptr first = d.first_class_decl(),
     second = d.second_class_decl();
 
-  if (report_name_size_and_alignment_changes(first, second, d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second, d.context(),
+					 out, indent);
 
   const diff_context_sptr& ctxt = d.context();
   maybe_report_diff_for_member(first, second, ctxt, out, indent);
@@ -750,10 +737,8 @@  leaf_reporter::report(const union_diff& d,
   // Now report the changes about the differents parts of the type.
   union_decl_sptr first = d.first_union_decl(), second = d.second_union_decl();
 
-  if (report_name_size_and_alignment_changes(first, second, d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second, d.context(),
+					 out, indent);
 
   maybe_report_diff_for_member(first, second,d. context(), out, indent);
 
@@ -789,10 +774,7 @@  leaf_reporter::report(const distinct_diff& d,
   report_loc_info(s, *d.context(), out);
   out << "\n";
 
-  if (report_size_and_alignment_changes(f, s, d.context(), out, indent,
-					/*start_with_new_line=*/false))
-    out << "\n";
-
+  report_size_and_alignment_changes(f, s, d.context(), out, indent);
   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
 }
 
@@ -982,11 +964,9 @@  leaf_reporter::report(const var_diff& d,
   decl_base_sptr first = d.first_var(), second = d.second_var();
   string n = first->get_pretty_representation();
 
-  if (report_name_size_and_alignment_changes(first, second,
-					     d.context(),
-					     out, indent,
-					     /*start_with_new_line=*/false))
-    out << "\n";
+  report_name_size_and_alignment_changes(first, second,
+					 d.context(),
+					 out, indent);
 
   maybe_report_diff_for_symbol(d.first_var()->get_symbol(),
 			       d.second_var()->get_symbol(),
@@ -1107,50 +1087,50 @@  leaf_reporter::report(const corpus_diff& d,
   if (ctxt->show_added_fns())
     {
       if (s.net_num_func_added() == 1)
-        out << indent << "1 Added function:\n\n";
+	out << indent << "1 Added function:\n\n";
       else if (s.net_num_func_added() > 1)
-        out << indent << s.net_num_func_added()
-            << " Added functions:\n\n";
+	out << indent << s.net_num_func_added()
+	    << " Added functions:\n\n";
       bool emitted = false;
       vector<function_decl*> sorted_added_fns;
       sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns);
       for (vector<function_decl*>::const_iterator i = sorted_added_fns.begin();
-           i != sorted_added_fns.end();
-           ++i)
-        {
-          if (d.priv_->added_function_is_suppressed(*i))
-            continue;
-
-          out
-            << indent
-            << "  ";
-          out << "[A] ";
-          out << "'"
-              << (*i)->get_pretty_representation()
-              << "'";
-          if (ctxt->show_linkage_names())
-            {
-              out << "    {";
-              show_linkage_name_and_aliases
-                (out, "", *(*i)->get_symbol(),
-                 d.second_corpus()->get_fun_symbol_map());
-              out << "}";
-            }
-          out << "\n";
-          if (is_member_function(*i) && get_member_function_is_virtual(*i))
-            {
-              class_decl_sptr c =
-                is_class_type(is_method_type((*i)->get_type())->get_class_type());
-              out << indent
-                  << "    "
-                  << "note that this adds a new entry to the vtable of "
-                  << c->get_pretty_representation()
-                  << "\n";
-            }
-          emitted = true;
-        }
+	   i != sorted_added_fns.end();
+	   ++i)
+	{
+	  if (d.priv_->added_function_is_suppressed(*i))
+	    continue;
+
+	  out
+	    << indent
+	    << "  ";
+	  out << "[A] ";
+	  out << "'"
+	      << (*i)->get_pretty_representation()
+	      << "'";
+	  if (ctxt->show_linkage_names())
+	    {
+	      out << "    {";
+	      show_linkage_name_and_aliases
+		(out, "", *(*i)->get_symbol(),
+		 d.second_corpus()->get_fun_symbol_map());
+	      out << "}";
+	    }
+	  out << "\n";
+	  if (is_member_function(*i) && get_member_function_is_virtual(*i))
+	    {
+	      class_decl_sptr c =
+		is_class_type(is_method_type((*i)->get_type())->get_class_type());
+	      out << indent
+		  << "    "
+		  << "note that this adds a new entry to the vtable of "
+		  << c->get_pretty_representation()
+		  << "\n";
+	    }
+	  emitted = true;
+	}
       if (emitted)
-        out << "\n";
+	out << "\n";
     }
 
   if (ctxt->show_changed_fns())
@@ -1262,7 +1242,7 @@  leaf_reporter::report(const corpus_diff& d,
 	  emitted = true;
 	}
       if (emitted)
-        out << "\n";
+	out << "\n";
     }
 
   if (ctxt->show_added_vars())
@@ -1325,7 +1305,7 @@  leaf_reporter::report(const corpus_diff& d,
 	    continue;
 
 	  if (!diff_to_be_reported(diff.get()))
-            continue;
+	    continue;
 
 	  n1 = diff->first_subject()->get_pretty_representation();
 	  n2 = diff->second_subject()->get_pretty_representation();
@@ -1337,7 +1317,7 @@  leaf_reporter::report(const corpus_diff& d,
 	  out << ":\n";
 	  diff->report(out, indent + "    ");
 	  out << "\n";
-          emitted = true;
+	  emitted = true;
 	}
       if (emitted)
 	out << "\n";
@@ -1373,7 +1353,7 @@  leaf_reporter::report(const corpus_diff& d,
 	  show_linkage_name_and_aliases(out, "", **i,
 					d.first_corpus()->get_fun_symbol_map());
 	  out << "\n";
-          emitted = true;
+	  emitted = true;
 	}
       if (emitted)
 	out << "\n";
@@ -1410,7 +1390,7 @@  leaf_reporter::report(const corpus_diff& d,
 					**i,
 					d.second_corpus()->get_fun_symbol_map());
 	  out << "\n";
-          emitted = true;
+	  emitted = true;
 	}
       if (emitted)
 	out << "\n";
@@ -1448,7 +1428,7 @@  leaf_reporter::report(const corpus_diff& d,
 	     d.first_corpus()->get_fun_symbol_map());
 
 	  out << "\n";
-          emitted = true;
+	  emitted = true;
 	}
       if (emitted)
 	out << "\n";
@@ -1484,7 +1464,7 @@  leaf_reporter::report(const corpus_diff& d,
 	  show_linkage_name_and_aliases(out, "", **i,
 					d.second_corpus()->get_fun_symbol_map());
 	  out << "\n";
-          emitted = true;
+	  emitted = true;
 	}
       if (emitted)
 	out << "\n";
diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
index fbac85f8..7c452877 100644
--- a/src/abg-reporter-priv.cc
+++ b/src/abg-reporter-priv.cc
@@ -242,16 +242,19 @@  represent(const diff_context& ctxt,
 /// @param ctxt the current diff context.
 ///
 /// @param out the output stream to send the representation to
+///
+/// @param indent the indentation string to use for the change report.
 void
 represent_data_member(var_decl_sptr d,
 		      const diff_context_sptr& ctxt,
-		      ostream& out)
+		      ostream& out,
+		      const string& indent)
 {
   if (!is_data_member(d)
       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
     return;
 
-  out << "'" << d->get_pretty_representation() << "'";
+  out << indent << "'" << d->get_pretty_representation() << "'";
   if (!get_member_is_static(d))
     {
       // Do not emit offset information for data member of a union
@@ -262,8 +265,8 @@  represent_data_member(var_decl_sptr d,
 			    get_data_member_offset(d),
 			    *ctxt, out);
       report_loc_info(d, *ctxt, out);
-      out << "\n";
     }
+  out << "\n";
 }
 
 /// If a given @ref var_diff node carries a data member change in
@@ -441,7 +444,7 @@  represent(const var_diff_sptr	&diff,
 	  out << indent << "while looking at anonymous data member '"
 	      << tr1 << "':\n"
 	      << indent << "the internal name of that anonymous data member"
-	                   "changed from:\n"
+			   "changed from:\n"
 	      << indent << " " << get_type_name(o->get_type()) << "\n"
 	      << indent << "to:\n"
 	      << indent << " " << get_type_name(n->get_type()) << "\n"
@@ -699,23 +702,18 @@  represent(const var_diff_sptr	&diff,
 /// @param out the output stream to report the change to.
 ///
 /// @param indent the string to use for indentation.
-///
-/// @param nl whether to start the first report line with a new line.
-///
-/// @return true iff something was reported.
-bool
+void
 report_size_and_alignment_changes(type_or_decl_base_sptr	first,
 				  type_or_decl_base_sptr	second,
 				  diff_context_sptr		ctxt,
 				  ostream&			out,
-				  const string&		indent,
-				  bool				nl)
+				  const string&			indent)
 {
   type_base_sptr f = dynamic_pointer_cast<type_base>(first),
     s = dynamic_pointer_cast<type_base>(second);
 
   if (!s || !f)
-    return false;
+    return;
 
   class_or_union_sptr first_class = is_class_or_union_type(first),
     second_class = is_class_or_union_type(second);
@@ -726,9 +724,8 @@  report_size_and_alignment_changes(type_or_decl_base_sptr	first,
     // declaration-only form of the second.  And the user asked that
     // this kind of change be filtered out, so do not report any size
     // change due to this.
-    return false;
+    return;
 
-  bool n = false;
   unsigned fs = f->get_size_in_bits(), ss = s->get_size_in_bits(),
     fa = f->get_alignment_in_bits(), sa = s->get_alignment_in_bits();
   array_type_def_sptr first_array = is_array_type(is_type(first)),
@@ -736,9 +733,6 @@  report_size_and_alignment_changes(type_or_decl_base_sptr	first,
   unsigned fdc = first_array ? first_array->get_dimension_count(): 0,
     sdc = second_array ? second_array->get_dimension_count(): 0;
 
-  if (nl)
-    out << "\n";
-
   if (ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
     {
       if (fs != ss || fdc != sdc)
@@ -801,27 +795,23 @@  report_size_and_alignment_changes(type_or_decl_base_sptr	first,
 	    {
 	      out << indent;
 	      show_numerical_change("type size", fs, ss, *ctxt, out);
-	      n = true;
+	      out << "\n";
 	    }
 	} // end if (fs != ss || fdc != sdc)
       else
 	if (ctxt->show_relative_offset_changes())
-	  out << indent << "type size hasn't changed\n";
+	  {
+	    out << indent << "type size hasn't changed\n";
+	  }
     }
   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
       && (fa != sa))
     {
-      if (n)
-	out << "\n";
       out << indent;
       show_numerical_change("type alignment", fa, sa, *ctxt, out,
 			    /*show_bits_or_bytes=*/false);
-      n = true;
+      out << "\n";
     }
-
-  if (n)
-    return true;
-  return false;
 }
 
 /// @param tod the type or declaration to emit loc info about
@@ -874,17 +864,12 @@  report_loc_info(const type_or_decl_base_sptr& tod,
 /// @param out the output stream to report the change to.
 ///
 /// @param indent the string to use for indentation.
-///
-/// @param nl whether to start the first report line with a new line.
-///
-/// @return true iff something was reported.
-bool
+void
 report_name_size_and_alignment_changes(decl_base_sptr		first,
 				       decl_base_sptr		second,
 				       diff_context_sptr	ctxt,
-				       ostream&		out,
-				       const string&		indent,
-				       bool			nl)
+				       ostream&			out,
+				       const string&		indent)
 {
   string fn = first->get_qualified_name(),
     sn = second->get_qualified_name();
@@ -898,21 +883,17 @@  report_name_size_and_alignment_changes(decl_base_sptr		first,
 	;
       else
 	{
-	  if (nl)
-	    out << "\n";
 	  out << indent;
 	  if (is_type(first))
 	    out << "type";
 	  else
 	    out << "declaration";
 	  out << " name changed from '" << fn << "' to '" << sn << "'";
-	  nl = true;
+	  out << "\n";
 	}
     }
 
-  nl |= report_size_and_alignment_changes(first, second, ctxt,
-					  out, indent, nl);
-  return nl;
+  report_size_and_alignment_changes(first, second, ctxt, out, indent);
 }
 
 /// Output the header preceding the the report for
@@ -1366,14 +1347,10 @@  maybe_report_unreachable_type_changes(const corpus_diff& d,
 /// @param out the output stream to report to.
 ///
 /// @param indent the white space string to use for indentation.
-///
-/// @param new_line_prefix if set to true, it means there is going to
-/// be a new line emitted before the report.
 void
 maybe_report_interfaces_impacted_by_diff(const diff	*d,
 					 ostream	&out,
-					 const string	&indent,
-					 bool		new_line_prefix)
+					 const string	&indent)
 {
   const diff_context_sptr &ctxt = d->context();
   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
@@ -1395,9 +1372,6 @@  maybe_report_interfaces_impacted_by_diff(const diff	*d,
   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
 
-  if (new_line_prefix)
-    out << '\n';
-
   size_t num_impacted_interfaces = impacted_artifacts->size();
   if (num_impacted_interfaces == 1)
     out << indent << "one impacted interface:\n";
@@ -1424,9 +1398,6 @@  maybe_report_interfaces_impacted_by_diff(const diff	*d,
 /// @param out the output stream to report to.
 ///
 /// @param indent the white space string to use for indentation.
-///
-/// @param new_line_prefix if set to true, it means there is going to
-/// be a new line emitted before the report.
 void
 maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
 					 ostream		&out,
diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
index 7471c74f..b6c56fdb 100644
--- a/src/abg-reporter-priv.h
+++ b/src/abg-reporter-priv.h
@@ -151,7 +151,8 @@  represent(const diff_context& ctxt,
 void
 represent_data_member(var_decl_sptr d,
 		      const diff_context_sptr& ctxt,
-		      ostream& out);
+		      ostream& out,
+		      const string& indent);
 
 void
 maybe_show_relative_offset_change(const var_diff_sptr &diff,
@@ -170,26 +171,24 @@  represent(const var_diff_sptr	&diff,
 	  const string&	indent = "",
 	  bool			local_only = false);
 
-bool
+void
 report_size_and_alignment_changes(type_or_decl_base_sptr	first,
 				  type_or_decl_base_sptr	second,
 				  diff_context_sptr		ctxt,
 				  ostream&			out,
-				  const string&		indent,
-				  bool				nl);
+				  const string&			indent);
 
 bool
 report_loc_info(const type_or_decl_base_sptr& tod,
 		const diff_context& ctxt,
 		ostream &out);
 
-bool
+void
 report_name_size_and_alignment_changes(decl_base_sptr		first,
 				       decl_base_sptr		second,
 				       diff_context_sptr	ctxt,
 				       ostream&		out,
-				       const string&		indent,
-				       bool			nl);
+				       const string&		indent);
 
 /// Represent the kind of difference we want report_mem_header() to
 /// report.
@@ -244,14 +243,12 @@  maybe_report_unreachable_type_changes(const corpus_diff& d,
 void
 maybe_report_interfaces_impacted_by_diff(const diff		*d,
 					 ostream		&out,
-					 const string		&indent,
-					 bool new_line_prefix = true);
+					 const string		&indent);
 
 void
 maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
 					 ostream		&out,
-					 const string		&indent,
-					 bool new_line_prefix = false);
+					 const string		&indent);
 
 } // end namespace comparison
 } // end namespace abigail
diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
index 96d48ccf..04676908 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
@@ -15,4 +15,3 @@  have sub-types that are different from what application 'test5-fn-changed-app' e
         1 data member deletion:
           'unsigned char S1::m1', at offset 32 (in bits)
 
-
diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
index 3c8c4a8f..b39f650d 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
@@ -15,4 +15,3 @@  have sub-types that are different from what application 'test5-fn-changed-app' e
         1 data member deletion:
           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
 
-
diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
index 5d2bd89c..f5077879 100644
--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
@@ -13,4 +13,3 @@  have sub-types that are different from what application 'test6-var-changed-app'
       1 data member deletion:
         'unsigned char S1::m1', at offset 32 (in bits)
 
-
diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
index 697929f0..5b78c83c 100644
--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
@@ -13,4 +13,3 @@  have sub-types that are different from what application 'test6-var-changed-app'
       1 data member deletion:
         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
 
-
diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
index 19db76e3..6a34710d 100644
--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type name changed from 'float' to 'int'
       type size hasn't changed
 
-
   [C] 'function void print(const Student)' has some indirect sub-type changes:
     parameter 1 of type 'const Student' has sub-type changes:
       in unqualified underlying type 'struct Student':
diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
index 138c4b5a..7602e761 100644
--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
@@ -10,7 +10,6 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
       type name changed from 'sto1' to 'stn1'
       type size hasn't changed
 
-
   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
     parameter 1 of type 'struct sto2' changed:
       type name changed from 'sto2' to 'stn2'
diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
index 53672744..bc37ff53 100644
--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
@@ -9,4 +9,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
index 6893e3fc..56c41d79 100644
--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
@@ -9,4 +9,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
index 5758077d..7e16fe32 100644
--- a/tests/data/test-abidiff/test-PR18791-report0.txt
+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
@@ -48,9 +48,7 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
                                          struct std::__detail::_List_node_base
                                        2 data member deletions:
                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
-
                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
-
                                        1 data member insertion:
                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
index c7c5a682..1cd7eaaf 100644
--- a/tests/data/test-abidiff/test-enum0-report.txt
+++ b/tests/data/test-abidiff/test-enum0-report.txt
@@ -3,7 +3,6 @@ 
     type size hasn't changed
     1 enumerator deletion:
       'E::e2' value '1'
-
     1 enumerator insertion:
       'E::e1' value '1'
 
diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
index f1198ef9..7e8acf80 100644
--- a/tests/data/test-abidiff/test-enum1-report.txt
+++ b/tests/data/test-abidiff/test-enum1-report.txt
@@ -3,7 +3,6 @@ 
     type size hasn't changed
     1 enumerator insertion:
       'E::e1' value '1'
-
     1 enumerator change:
       'E::e2' from value '1' to '2'
 
diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
index 39b71e55..e334bf1a 100644
--- a/tests/data/test-abidiff/test-struct1-report.txt
+++ b/tests/data/test-abidiff/test-struct1-report.txt
@@ -6,7 +6,6 @@ 
 
     1 data member deletion:
       'char s0::m1', at offset 96 (in bits)
-
     1 data member insertion:
       'double s0::m01', at offset 128 (in bits)
     2 data member changes:
diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
index 29f823ec..aab271ff 100644
--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
@@ -100,7 +100,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
            type size hasn't changed
-
            3 data member changes:
             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
@@ -171,7 +170,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
           type size changed from 35008 to 35072 (in bits)
           1 data member deletion:
             'char lttng_session::padding[12]', at offset 34912 (in bits)
-
           1 data member insertion:
             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
 
@@ -208,7 +206,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
           1 data member deletion:
             'bool lttng_notification::owns_elements', at offset 128 (in bits)
 
-
   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
     return type changed:
       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
@@ -289,7 +286,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
                            'op_type::AST_OP_BIN_AND' value '10'
                            'op_type::AST_OP_BIN_OR' value '11'
                            'op_type::AST_OP_BIN_XOR' value '12'
-
                          5 enumerator insertions:
                            'op_type::AST_OP_BIT_RSHIFT' value '6'
                            'op_type::AST_OP_BIT_LSHIFT' value '7'
@@ -319,7 +315,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
                          type size hasn't changed
                          1 enumerator deletion:
                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
-
                          1 enumerator insertion:
                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
 
diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
index cf29a4fd..833879c7 100644
--- a/tests/data/test-diff-dwarf/test13-report.txt
+++ b/tests/data/test-diff-dwarf/test13-report.txt
@@ -12,7 +12,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
-
          type of 'unsigned int S::m2' changed:
            type name changed from 'unsigned int' to 'long long int'
            type size changed from 32 to 64 (in bits)
diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
index f7a75df7..fd9708e6 100644
--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
         type size hasn't changed
         1 data member deletion:
           'int some_union_type::m0'
-
         type changed from:
           union some_union_type{int m0; char m1; S m2;}
         to:
diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
index d0b8c52c..f0f9e1a1 100644
--- a/tests/data/test-diff-dwarf/test40-report-0.txt
+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
         type size changed from 96 to 64 (in bits)
         1 data member deletion:
           'int S2::to_remove', at offset 0 (in bits)
-
         2 data member changes:
          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
@@ -24,7 +23,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type size hasn't changed
 
 
-
   [C] 'function int foo(S1*)' has some indirect sub-type changes:
     parameter 1 of type 'S1*' has sub-type changes:
       in pointed to type 'struct S1':
diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
index f0a25a2e..44918baa 100644
--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
@@ -19,7 +19,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     return type changed:
       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
       type size hasn't changed
-
       1 base class deletion:
         struct std::_Tuple_impl<0ul, STR&&>
       1 base class insertion:
diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
index 1c0c773d..60681336 100644
--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
@@ -12,4 +12,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
             'char m2', at offset 8 (in bits)
 
 
-
diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
index bdc31fd0..5a505fc3 100644
--- a/tests/data/test-diff-filter/test10-report.txt
+++ b/tests/data/test-diff-filter/test10-report.txt
@@ -16,4 +16,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
           'unsigned int S::m', at offset 0 (in bits)
 
 
-
diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
index 0d30ef39..6ade5bdf 100644
--- a/tests/data/test-diff-filter/test18-report.txt
+++ b/tests/data/test-diff-filter/test18-report.txt
@@ -14,4 +14,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 
 
-
diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
index f847d32e..99c14329 100644
--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
@@ -7,10 +7,8 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     parameter 1 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
-
     parameter 2 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
index b78215b0..5def3a08 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> >
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
index ccaf8126..3bc8f6d7 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
index 44e78935..d91de66b 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bytes) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 0x158 to 0x2b0 (in bytes)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
index c9cb9246..306a9863 100644
--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
@@ -116,7 +116,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
@@ -220,7 +219,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -235,7 +233,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -264,7 +261,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
@@ -286,20 +282,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> >
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
index 08692c1e..22e614d8 100644
--- a/tests/data/test-diff-filter/test36-report-0.txt
+++ b/tests/data/test-diff-filter/test36-report-0.txt
@@ -13,7 +13,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type size hasn't changed
 
 
-
   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
     parameter 1 of type 'S*' has sub-type changes:
       in pointed to type 'struct S' at test36-2-v1.c:6:1:
@@ -23,11 +22,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
-
          type of 'int S::m1' changed:
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
 
 
-
diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
index 94a0551d..d40a1374 100644
--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
@@ -7,6 +7,5 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
   type size changed from 32 to 64 (in bits)
   1 data member insertion:
     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
-
   one impacted interface:
     function void fn(C&)
diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
index 7e3a4d47..26933033 100644
--- a/tests/data/test-diff-filter/test7-report.txt
+++ b/tests/data/test-diff-filter/test7-report.txt
@@ -7,7 +7,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     return type changed:
       type name changed from 'return_type' to 'other_return_type'
       type size hasn't changed
-
       no data member change (1 filtered);
 
 
diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
index 05d6fcad..873a84cd 100644
--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
@@ -54,9 +54,7 @@ 
                                                   struct std::__detail::_List_node_base
                                                 2 data member deletions:
                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
-
                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
-
                                                 1 data member insertion:
                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
index c227fa5c..a0cc67c2 100644
--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
@@ -10,7 +10,6 @@ 
           type size hasn't changed
           1 enumerator insertion:
             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
-
           1 enumerator change:
             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
 
@@ -34,7 +33,6 @@ 
           type size hasn't changed
           1 enumerator insertion:
             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
-
           1 enumerator change:
             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
 
@@ -52,7 +50,6 @@ 
                  type size hasn't changed
                  1 enumerator deletion:
                    '__anonymous_enum__::ssl_auth_rsa' value '1'
-
                  7 enumerator insertions:
                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
@@ -114,7 +111,6 @@ 
                                              type size hasn't changed
                                              1 enumerator insertion:
                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
-
                                              1 enumerator change:
                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
 
diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
index bf081f52..70b41ddd 100644
--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
@@ -25,7 +25,6 @@ 
         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
           type size hasn't changed
-
           7 enumerator deletions:
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
@@ -34,7 +33,6 @@ 
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
-
           9 enumerator insertions:
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
index 7b86b964..0b909f90 100644
--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
@@ -25,7 +25,6 @@ 
         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
           type size hasn't changed
-
           7 enumerator deletions:
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
@@ -34,7 +33,6 @@ 
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
-
           9 enumerator insertions:
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
index 3d20caf1..c247ef95 100644
--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
@@ -239,15 +239,10 @@ 
                                                  type size changed from 1280 to 256 (in bits)
                                                  5 data member deletions:
                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
-
                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
-
                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
-
                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
-
                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
-
                                                  1 data member change:
                                                   type of 'SSL* RedsStream::ssl' changed:
                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
@@ -257,193 +252,99 @@ 
                                                         type size changed from 5504 to 0 (in bits)
                                                         94 data member deletions:
                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
-
                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
-
                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
-
                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
-
                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
-
                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
-
                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
-
                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
-
                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
-
                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
-
                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
-
                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
-
                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
-
                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
-
                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
-
                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
-
                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
-
                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
-
                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
-
                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
-
                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
-
                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
-
                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
-
                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
-
                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
-
                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
-
                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
-
                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
-
                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
-
                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
-
                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
-
                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
-
                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
-
                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
-
                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
-
                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
-
                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
-
                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
-
                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
-
                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
-
                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
-
                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
-
                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
-
                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
-
                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
-
                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
-
                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
-
                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
-
                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
-
                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
-
                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
-
                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
-
                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
-
                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
-
                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
-
                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
-
                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
-
                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
-
                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
-
                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
-
                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
-
                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
-
                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
-
                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
-
                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
-
                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
-
                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
-
                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
-
                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
-
                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
-
                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
-
                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
-
                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
-
                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
-
                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
-
                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
-
                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
-
                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
-
                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
-
                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
-
                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
-
                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
-
                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
-
                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
-
                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
-
                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
-
                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
-
                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
-
                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
-
                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
-
                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
-
                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
-
                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
-
                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
-
                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
 
 
@@ -558,7 +459,6 @@ 
         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
           type size hasn't changed
-
           7 enumerator deletions:
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
@@ -567,7 +467,6 @@ 
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
-
           9 enumerator insertions:
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
index 75ba0a50..11cd5682 100644
--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
@@ -22,7 +22,6 @@  Leaf changes summary: 11 artifacts changed (7 filtered out)
   'enum __anonymous_enum__2 at spice.h:471:1' changed:
     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
     type size hasn't changed
-
     7 enumerator deletions:
       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
@@ -31,7 +30,6 @@  Leaf changes summary: 11 artifacts changed (7 filtered out)
       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
-
     9 enumerator insertions:
       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
@@ -48,7 +46,6 @@  Leaf changes summary: 11 artifacts changed (7 filtered out)
       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
   'typedef spice_image_compression_t at spice.h:479:1' changed:
     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
-
     2 impacted interfaces:
       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
index f8e60b50..d0381ce5 100644
--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
@@ -60,7 +60,6 @@ 
         type size hasn't changed
         1 enumerator insertion:
           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
-
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
@@ -129,7 +128,6 @@ 
 
 
 
-
                1 member function deletion:
                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
 
@@ -138,11 +136,8 @@ 
 
                3 data member deletions:
                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
-
                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
-
                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
-
                18 data member changes:
                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
index 10816705..89c8efa3 100644
--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
@@ -31,7 +31,6 @@ 
         type size hasn't changed
         1 enumerator insertion:
           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
-
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
index 8f5d0b6b..c39851d3 100644
--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
@@ -7,14 +7,11 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     return type changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
-
     parameter 1 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
-
     parameter 2 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
index 411cc1b4..244455ae 100644
--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
@@ -7,6 +7,5 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
   type size changed from 32 to 64 (in bits)
   1 data member insertion:
     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
-
   one impacted interface:
     function void fn(C&)
diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
index b12a8a61..f286cc7b 100644
--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
@@ -7,7 +7,6 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
   type size changed from 32 to 64 (in bits)
   1 data member insertion:
     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
-
   3 impacted interfaces:
     function void interface1(struct_type*)
     function void interface2(struct_type&)
@@ -20,7 +19,6 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
    and size changed from 32 to 64 (in bits) (by +32 bits)
    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
-
   3 impacted interfaces:
     function void interface1(struct_type*)
     function void interface2(struct_type&)
diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
index 4b1681bc..d772bd1d 100644
--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
@@ -8,7 +8,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
       1 enumerator insertion:
         'EnumType1::ee3_inserted' value '3'
-
       1 enumerator change:
         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
 
@@ -18,7 +17,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
       1 enumerator insertion:
         'EnumType0::e3_inserted' value '3'
-
       1 enumerator change:
         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1