diff mbox series

Consider the implicit 'this' parameter when comparing methods

Message ID 86ft6nvjcg.fsf@redhat.com
State New
Headers show
Series Consider the implicit 'this' parameter when comparing methods | expand

Commit Message

Dodji Seketeli Oct. 9, 2020, 9:28 a.m. UTC
Hello,

Since 2013 the implicit 'this' parameter has been excluded from the
function parameters taken into account while comparing class member
functions.  This was an early measure to avoid infinite recursion that
would then occur when comparing classes (and thus their member
functions that are referenced in their vtable).  But since then, we've
built descent infrastructure to prevent this kind of recursion in a
more generic manner.

This patch thus removes that restriction and should therefore lift the
concerns expressed in the bug
https://sourceware.org/bugzilla/show_bug.cgi?id=26672.

Namely, changes to (data members of) a class should now be detected
when comparing member functions of that class.

With this change, the reference output of several comparison
regression tests changed because, obviously, some impacted member
functions are now reported along with detecting changes in data
membrers of classes.  The patch thus adjusts those reference ouputs.

The patch also adjust the behaviour of the predicate:
  "accessed_through = pointer|reference|reference-or-pointer"
The idea is to make the predicate work on qualified version of a type.

	* include/abg-ir.h (function_type::get_first_parm): Declare new
	accessor.
	* src/abg-ir.cc (function_type::get_first_parm): Define new
	accessor.
	(equals): In the overload for function_type,
	always take the implicit "this" parameter into account in
	parameter comparisons.
	(function_type::get_first_non_implicit_parm): Adjust comment.
	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
	Avoid potential NULL pointer dereferencing.
	* src/abg-comparison.cc
	(function_type_diff::ensure_lookup_tables_populated): Always take
	the changes to the implicit 'this' parameter into account in the
	function type diff.
	(compute_diff): In the overload for function_type, Always compare
	the implicit 'this' parameter when comparing function parameters.
	* src/abg-default-reporter.cc (default_reporter::report): Refer to
	"implicit parameter" when reporting changes on parameters
	artificially generated by the compiler.
	* src/abg-suppression.cc (type_suppression::suppresses_diff): Make
	the 'access_through' predicate work on a qualified version of type
	'S', even if it was meant to work on type 'S'.  This allows it to
	work on 'const S', especially when S is accessed through 'pointer
	to const S', which happens when we consider the implicit 'this'
	parameter of a const member function.
	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
	* tests/data/test-abidiff-exit/test1-voffset-change-report0.txt:
	Likewise.
	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
	Likewise.
	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: Likewise.
	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
	* tests/data/test-diff-dwarf/test5-report.txt: Likewise.
	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
	* tests/data/test-diff-filter/test0-report.txt: Likewise.
	* tests/data/test-diff-filter/test01-report.txt: Likewise.
	* tests/data/test-diff-filter/test10-report.txt: Likewise.
	* tests/data/test-diff-filter/test13-report.txt: Likewise.
	* tests/data/test-diff-filter/test2-report.txt: Likewise.
	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt:
	Likewise.
	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt:
	Likewise.
	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
	Likewise.
	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
	Likewise.
	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
	Likewise.
	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
	Likewise.
	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
	Likewise.
	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
	Likewise.
	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
	Likewise.
	* tests/data/test-diff-filter/test4-report.txt: Likewise.
	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
	* tests/data/test-diff-filter/test9-report.txt: Likewise.
	* 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:
	Likewise.
	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
	Likewise.
	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
	Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-0.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-2.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-3.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-5.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise.
	* tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise.
	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
	* tests/data/test-diff-suppr/test33-report-0.txt: Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

Applied to master.

---
 include/abg-ir.h                                   |   3 +
 src/abg-comp-filter.cc                             |   2 +
 src/abg-comparison.cc                              |   8 +-
 src/abg-default-reporter.cc                        |   6 +-
 src/abg-ir.cc                                      |  31 +-
 src/abg-suppression.cc                             |   4 +
 .../test-abicompat/test5-fn-changed-report-0.txt   |   4 +
 .../test-abicompat/test5-fn-changed-report-1.txt   |   4 +
 .../test1-voffset-change-report0.txt               |  15 +-
 tests/data/test-abidiff/test-PR18791-report0.txt   | 332 +++++++++++++-----
 tests/data/test-abidiff/test-struct1-report.txt    |   4 +
 ...test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt |   2 +-
 tests/data/test-diff-dwarf/test0-report.txt        |  34 +-
 .../test28-vtable-changes-report-0.txt             |   3 +
 .../test29-vtable-changes-report-0.txt             |  32 +-
 .../test30-vtable-changes-report-0.txt             |  39 ++-
 .../test31-vtable-changes-report-0.txt             |  32 +-
 .../test36-ppc64-aliases-report-0.txt              |  22 +-
 .../test41-PR20476-hidden-report-0.txt             |  32 +-
 .../test42-PR21296-clanggcc-report0.txt            |  24 ++
 tests/data/test-diff-dwarf/test5-report.txt        |  15 +-
 tests/data/test-diff-dwarf/test8-report.txt        |  25 +-
 tests/data/test-diff-filter/test0-report.txt       |  37 ++-
 tests/data/test-diff-filter/test01-report.txt      |  38 ++-
 tests/data/test-diff-filter/test10-report.txt      |   8 +-
 tests/data/test-diff-filter/test13-report.txt      |   8 +-
 tests/data/test-diff-filter/test2-report.txt       |   8 +-
 ...undant-and-filtered-children-nodes-report-0.txt |   2 +-
 ...undant-and-filtered-children-nodes-report-1.txt |  10 +-
 .../test30-pr18904-rvalueref-report0.txt           | 239 +++++++------
 .../test30-pr18904-rvalueref-report1.txt           | 239 +++++++------
 .../test30-pr18904-rvalueref-report2.txt           | 239 +++++++------
 .../test31-pr18535-libstdc++-report-0.txt          | 127 ++++++-
 .../test31-pr18535-libstdc++-report-1.txt          | 127 ++++++-
 .../test35-pr18754-no-added-syms-report-0.txt      | 239 +++++++------
 .../test35-pr18754-no-added-syms-report-1.txt      |   2 +-
 tests/data/test-diff-filter/test4-report.txt       |   2 +-
 tests/data/test-diff-filter/test41-report-0.txt    | 125 ++++++-
 tests/data/test-diff-filter/test9-report.txt       |   8 +-
 ...igc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt | 101 +++---
 ...64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt | 369 ++++++++++++---------
 ...64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt | 109 ++++--
 .../test-diff-suppr/test24-soname-report-0.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-1.txt     |  15 +-
 .../test-diff-suppr/test24-soname-report-10.txt    |  15 +-
 .../test-diff-suppr/test24-soname-report-11.txt    |   2 +-
 .../test-diff-suppr/test24-soname-report-12.txt    |  15 +-
 .../test-diff-suppr/test24-soname-report-13.txt    |   2 +-
 .../test-diff-suppr/test24-soname-report-14.txt    |  15 +-
 .../test-diff-suppr/test24-soname-report-15.txt    |   2 +-
 .../test-diff-suppr/test24-soname-report-16.txt    |  15 +-
 .../test-diff-suppr/test24-soname-report-2.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-3.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-4.txt     |  15 +-
 .../test-diff-suppr/test24-soname-report-5.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-6.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-7.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-8.txt     |   2 +-
 .../test-diff-suppr/test24-soname-report-9.txt     |   2 +-
 tests/data/test-diff-suppr/test31-report-1.txt     |   8 +-
 tests/data/test-diff-suppr/test33-report-0.txt     |   2 +-
 61 files changed, 1861 insertions(+), 971 deletions(-)
diff mbox series

Patch

diff --git a/include/abg-ir.h b/include/abg-ir.h
index f17a3bf..c7c4c8e 100644
--- a/include/abg-ir.h
+++ b/include/abg-ir.h
@@ -3150,6 +3150,9 @@  public:
   parameters::const_iterator
   get_first_non_implicit_parm() const;
 
+  parameters::const_iterator
+  get_first_parm() const;
+
   const interned_string&
   get_cached_name(bool internal = false) const;
 
diff --git a/src/abg-comp-filter.cc b/src/abg-comp-filter.cc
index abfa3c0..35c9277 100644
--- a/src/abg-comp-filter.cc
+++ b/src/abg-comp-filter.cc
@@ -258,6 +258,8 @@  function_name_changed_but_not_symbol(const function_decl_sptr& f,
       elf_symbol_sptr fs = f->get_symbol(), ss = s->get_symbol();
       if (fs == ss)
 	return true;
+      if (!!fs != !!ss)
+	return false;
       for (elf_symbol_sptr s = fs->get_next_alias();
 	   s && !s->is_main_symbol();
 	   s = s->get_next_alias())
diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index 11f506f..07bfe98 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -6829,7 +6829,7 @@  function_type_diff::ensure_lookup_tables_populated()
        i != priv_->parm_changes_.deletions().end();
        ++i)
     {
-      parm = *(first_function_type()->get_first_non_implicit_parm()
+      parm = *(first_function_type()->get_first_parm()
 	       + i->index());
       parm_name = parm->get_name_id();
       // If for a reason the type name is empty we want to know and
@@ -6849,7 +6849,7 @@  function_type_diff::ensure_lookup_tables_populated()
 	   j != i->inserted_indexes().end();
 	   ++j)
 	{
-	  parm = *(second_function_type()->get_first_non_implicit_parm() + *j);
+	  parm = *(second_function_type()->get_first_parm() + *j);
 	  parm_name = parm->get_name_id();
 	  // If for a reason the type name is empty we want to know and
 	  // fix that.
@@ -7101,9 +7101,9 @@  compute_diff(const function_type_sptr	first,
 
   function_type_diff_sptr result(new function_type_diff(first, second, ctxt));
 
-  diff_utils::compute_diff(first->get_first_non_implicit_parm(),
+  diff_utils::compute_diff(first->get_first_parm(),
 			   first->get_parameters().end(),
-			   second->get_first_non_implicit_parm(),
+			   second->get_first_parm(),
 			   second->get_parameters().end(),
 			   result->priv_->parm_changes_);
 
diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
index 0b572db..f536be0 100644
--- a/src/abg-default-reporter.cc
+++ b/src/abg-default-reporter.cc
@@ -536,8 +536,10 @@  default_reporter::report(const fn_parm_diff& d, ostream& out,
       diff_category saved_category = type_diff->get_category();
       // Parameter type changes are never redundants.
       type_diff->set_category(saved_category & ~REDUNDANT_CATEGORY);
-      out << indent
-	  << "parameter " << f->get_index();
+      out << indent;
+      if (f->get_is_artificial())
+	out << "implicit ";
+      out << "parameter " << f->get_index();
       report_loc_info(f, *d.context(), out);
       out << " of type '"
 	  << f->get_type_pretty_representation();
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 2852c09..24f42e5 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -16816,24 +16816,11 @@  equals(const function_type& lhs,
 	  RETURN(result);
       }
 
-  class_decl* lcl = 0, * rcl = 0;
   vector<shared_ptr<function_decl::parameter> >::const_iterator i,j;
-  for (i = lhs.get_first_non_implicit_parm(),
-	 j = rhs.get_first_non_implicit_parm();
-       (i != lhs.get_parameters().end()
-	&& j != rhs.get_parameters().end());
+  for (i = lhs.get_first_parm(), j = rhs.get_first_parm();
+       i != lhs.get_parameters().end() && j != rhs.get_parameters().end();
        ++i, ++j)
     {
-      if (lhs_class)
-	lcl = dynamic_cast<class_decl*>((*i)->get_type().get());
-      if (rhs_class)
-	rcl = dynamic_cast<class_decl*>((*j)->get_type().get());
-      if (lcl && rcl
-	  && lcl == lhs_class
-	  && rcl == rhs_class)
-	// Do not compare the class types of two methods that we are
-	// probably comparing atm; otherwise we can recurse indefinitely.
-	continue;
       if (**i != **j)
 	{
 	  result = false;
@@ -16864,12 +16851,12 @@  equals(const function_type& lhs,
 #undef RETURN
 }
 
-/// Get the parameter of the function.
+/// Get the first parameter of the function.
 ///
 /// If the function is a non-static member function, the parameter
 /// returned is the first one following the implicit 'this' parameter.
 ///
-/// @return the first non implicit parm.
+/// @return the first non implicit parameter of the function.
 function_type::parameters::const_iterator
 function_type::get_first_non_implicit_parm() const
 {
@@ -16886,6 +16873,16 @@  function_type::get_first_non_implicit_parm() const
   return i;
 }
 
+/// Get the first parameter of the function.
+///
+/// Note that if the function is a non-static member function, the
+/// parameter returned is the implicit 'this' parameter.
+///
+/// @return the first parameter of the function.
+function_type::parameters::const_iterator
+function_type::get_first_parm() const
+{return get_parameters().begin();}
+
 /// Get the name of the current @ref function_type.
 ///
 /// The name is retrieved from a cache.  If the cache is empty, this
diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc
index ae7cc95..0d8604a 100644
--- a/src/abg-suppression.cc
+++ b/src/abg-suppression.cc
@@ -725,6 +725,7 @@  type_suppression::suppresses_diff(const diff* diff) const
 	      if (!d)
 		// This might be of, e.g, distinct_diff type.
 		return false;
+	      d = is_type_diff(peel_qualified_diff(d));
 	    }
 	  else
 	    return false;
@@ -737,6 +738,7 @@  type_suppression::suppresses_diff(const diff* diff) const
 	      if (!d)
 		// This might be of, e.g, distinct_diff type.
 		return false;
+	      d = is_type_diff(peel_qualified_diff(d));
 	    }
 	  else
 	    return false;
@@ -747,11 +749,13 @@  type_suppression::suppresses_diff(const diff* diff) const
 	    {
 	      d = is_type_diff(ptr_diff->underlying_type_diff().get());
 	      ABG_ASSERT(d);
+	      d = is_type_diff(peel_qualified_diff(d));
 	    }
 	  else if (const reference_diff* ref_diff = is_reference_diff(diff))
 	    {
 	      d = is_type_diff(ref_diff->underlying_type_diff().get());
 	      ABG_ASSERT(d);
+	      d = is_type_diff(peel_qualified_diff(d));
 	    }
 	  else
 	    return false;
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 0467690..ccde357 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
@@ -15,3 +15,7 @@  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)
 
+  method S0::S0():
+    implicit parameter 0 of type 'S0*' has sub-type changes:
+      pointed to type 'struct S0' changed, as reported earlier
+
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 b39f650..dbdcbe5 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
@@ -15,3 +15,7 @@  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
 
+  method S0::S0():
+    implicit parameter 0 of type 'S0*' has sub-type changes:
+      pointed to type 'struct S0' changed at test5-fn-changed-libapp-v0.h:1:1, as reported earlier
+
diff --git a/tests/data/test-abidiff-exit/test1-voffset-change-report0.txt b/tests/data/test-abidiff-exit/test1-voffset-change-report0.txt
index 7080934..4d832e2 100644
--- a/tests/data/test-abidiff-exit/test1-voffset-change-report0.txt
+++ b/tests/data/test-abidiff-exit/test1-voffset-change-report0.txt
@@ -1,13 +1,16 @@ 
-Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
+Functions changes summary: 0 Removed, 1 Changed (1 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
-2 functions with some indirect sub-type change:
+1 function with some indirect sub-type change:
 
   [C] 'method virtual int C::virtual_func0()' has some indirect sub-type changes:
     the vtable offset of method virtual int C::virtual_func0() changed from 0 to 1
       note that this is an ABI incompatible change to the vtable of class C
-
-  [C] 'method virtual char C::virtual_func1()' has some indirect sub-type changes:
-    the vtable offset of method virtual char C::virtual_func1() changed from 1 to 0
-      note that this is an ABI incompatible change to the vtable of class C
+    implicit parameter 0 of type 'C*' has sub-type changes:
+      in pointed to type 'class C':
+        type size hasn't changed
+        1 member function changes (1 filtered):
+          'method virtual char C::virtual_func1()' has some sub-type changes:
+            the vtable offset of method virtual char C::virtual_func1() changed from 1 to 0
+              note that this is an ABI incompatible change to the vtable of class C
 
diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
index 5bc2d08..41d151e 100644
--- a/tests/data/test-abidiff/test-PR18791-report0.txt
+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 1 Removed, 17 Changed, 1 Added functions
+Functions changes summary: 1 Removed, 51 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Removed function:
@@ -9,71 +9,135 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   [A] 'method void std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_clear()'
 
-17 functions with some indirect sub-type change:
+51 functions with some indirect sub-type change:
 
-  [C] 'method sigc::connection::connection(sigc::slot_base&)' has some indirect sub-type changes:
-    parameter 1 of type 'sigc::slot_base&' has sub-type changes:
-      in referenced type 'class sigc::slot_base':
+  [C] 'method bool sigc::connection::block(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      in pointed to type 'struct sigc::connection':
         type size hasn't changed
         1 data member change:
-          type of 'sigc::slot_base::rep_type* sigc::slot_base::rep_' changed:
-            in pointed to type 'typedef sigc::slot_base::rep_type':
-              underlying type 'struct sigc::internal::slot_rep' changed:
-                type size hasn't changed
-                1 base class change:
-                  'struct sigc::trackable' changed:
-                    type size hasn't changed
-                    1 data member change:
-                      type of 'sigc::internal::trackable_callback_list* sigc::trackable::callback_list_' changed:
-                        in pointed to type 'struct sigc::internal::trackable_callback_list':
-                          type size changed from 192 to 256 (in bits)
-                          2 data member changes:
-                            type of 'sigc::internal::trackable_callback_list::callback_list sigc::internal::trackable_callback_list::callbacks_' changed:
-                              underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                type size changed from 128 to 192 (in bits)
-                                1 base class change:
-                                  'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                    type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                    type size changed from 128 to 192 (in bits)
-                                    1 data member change:
-                                      type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed:
-                                        type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
-                                        type size changed from 128 to 192 (in bits)
-                                        1 data member change:
-                                          type of 'std::__detail::_List_node_base std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed:
-                                            type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
-                                            type size changed from 128 to 192 (in bits)
-                                            1 base class insertion:
-                                              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'
-                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
-                            'bool sigc::internal::trackable_callback_list::clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
+          type of 'sigc::slot_base* sigc::connection::slot_' changed:
+            in pointed to type 'class sigc::slot_base':
+              type size hasn't changed
+              1 data member change:
+                type of 'sigc::slot_base::rep_type* sigc::slot_base::rep_' changed:
+                  in pointed to type 'typedef sigc::slot_base::rep_type':
+                    underlying type 'struct sigc::internal::slot_rep' changed:
+                      type size hasn't changed
+                      1 base class change:
+                        'struct sigc::trackable' changed:
+                          type size hasn't changed
+                          1 data member change:
+                            type of 'sigc::internal::trackable_callback_list* sigc::trackable::callback_list_' changed:
+                              in pointed to type 'struct sigc::internal::trackable_callback_list':
+                                type size changed from 192 to 256 (in bits)
+                                2 data member changes:
+                                  type of 'sigc::internal::trackable_callback_list::callback_list sigc::internal::trackable_callback_list::callbacks_' changed:
+                                    underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
+                                      type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
+                                      type size changed from 128 to 192 (in bits)
+                                      1 base class change:
+                                        'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
+                                          type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
+                                          type size changed from 128 to 192 (in bits)
+                                          1 data member change:
+                                            type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed:
+                                              type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
+                                              type size changed from 128 to 192 (in bits)
+                                              1 data member change:
+                                                type of 'std::__detail::_List_node_base std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed:
+                                                  type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
+                                                  type size changed from 128 to 192 (in bits)
+                                                  1 base class insertion:
+                                                    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'
+                                            and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
+                                  'bool sigc::internal::trackable_callback_list::clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
+
+  [C] 'method bool sigc::connection::blocked()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::connection*' has sub-type changes:
+      in pointed to type 'const sigc::connection':
+        unqualified underlying type 'struct sigc::connection' changed, as reported earlier
+
+  [C] 'method sigc::connection::connection(sigc::slot_base&)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
+    parameter 1 of type 'sigc::slot_base&' has sub-type changes:
+      referenced type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method void sigc::connection::disconnect()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
+
+  [C] 'method bool sigc::connection::empty()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::connection*' has sub-type changes:
+      in pointed to type 'const sigc::connection':
+        unqualified underlying type 'struct sigc::connection' changed, as reported earlier
+
+  [C] 'method bool sigc::connection::operator bool()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
 
   [C] 'method sigc::connection& sigc::connection::operator=(const sigc::connection&)' has some indirect sub-type changes:
     return type changed:
-      in referenced type 'struct sigc::connection':
-        type size hasn't changed
-        1 data member change:
-          type of 'sigc::slot_base* sigc::connection::slot_' changed:
-            pointed to type 'class sigc::slot_base' changed, as reported earlier
+      referenced type 'struct sigc::connection' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
     parameter 1 of type 'const sigc::connection&' has sub-type changes:
       in referenced type 'const sigc::connection':
         unqualified underlying type 'struct sigc::connection' changed, as reported earlier
 
   [C] 'method void sigc::connection::set_slot(sigc::slot_base*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
     parameter 1 of type 'sigc::slot_base*' has sub-type changes:
       pointed to type 'class sigc::slot_base' changed, as reported earlier
 
+  [C] 'method bool sigc::connection::unblock()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+      pointed to type 'struct sigc::connection' changed, as reported earlier
+
+  [C] 'method void sigc::internal::signal_impl::block(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      in pointed to type 'struct sigc::internal::signal_impl':
+        type size changed from 192 to 256 (in bits)
+        1 data member change:
+          type of 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> > sigc::internal::signal_impl::slots_' changed:
+            type name changed from 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >'
+            type size changed from 128 to 192 (in bits)
+            1 base class change:
+              'class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' changed:
+                type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >'
+                type size changed from 128 to 192 (in bits)
+                1 data member change:
+                  type of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed:
+                    type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl'
+                    type size changed from 128 to 192 (in bits)
+                    1 data member change:
+                      type of 'std::__detail::_List_node_base std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed, as reported earlier
+                      and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node'
+                  and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl'
+
+  [C] 'method bool sigc::internal::signal_impl::blocked()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::internal::signal_impl*' has sub-type changes:
+      in pointed to type 'const sigc::internal::signal_impl':
+        unqualified underlying type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method void sigc::internal::signal_impl::clear()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
   [C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::connect(const sigc::slot_base&)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator' changed:
         typedef name changed from std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator to std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
     parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
       in referenced type 'const sigc::slot_base':
         unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
@@ -81,21 +145,80 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   [C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::erase(sigc::internal::signal_impl::iterator_type)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
     parameter 1 of type 'typedef sigc::internal::signal_impl::iterator_type' changed:
       underlying type 'typedef std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator' changed, as reported earlier
 
   [C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::insert(sigc::internal::signal_impl::iterator_type, const sigc::slot_base&)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
     parameter 1 of type 'typedef sigc::internal::signal_impl::iterator_type' changed:
       underlying type 'typedef std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::iterator' changed, as reported earlier
     parameter 2 of type 'const sigc::slot_base&' has sub-type changes:
       in referenced type 'const sigc::slot_base':
         unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
 
+  [C] 'method sigc::internal::signal_impl::signal_impl()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method sigc::internal::signal_impl::size_type sigc::internal::signal_impl::size()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::internal::signal_impl*' has sub-type changes:
+      in pointed to type 'const sigc::internal::signal_impl':
+        unqualified underlying type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method void sigc::internal::signal_impl::sweep()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method void sigc::internal::signal_impl::unreference_exec()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method void sigc::internal::slot_rep::disconnect()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::slot_rep*' has sub-type changes:
+      pointed to type 'struct sigc::internal::slot_rep' changed, as reported earlier
+
+  [C] 'method void sigc::internal::trackable_callback_list::add_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::trackable_callback_list*' has sub-type changes:
+      pointed to type 'struct sigc::internal::trackable_callback_list' changed, as reported earlier
+
+  [C] 'method void sigc::internal::trackable_callback_list::clear()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::trackable_callback_list*' has sub-type changes:
+      pointed to type 'struct sigc::internal::trackable_callback_list' changed, as reported earlier
+
+  [C] 'method void sigc::internal::trackable_callback_list::remove_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::internal::trackable_callback_list*' has sub-type changes:
+      pointed to type 'struct sigc::internal::trackable_callback_list' changed, as reported earlier
+
+  [C] 'method void sigc::signal_base::block(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      in pointed to type 'struct sigc::signal_base':
+        type size hasn't changed
+        1 base class change:
+          'struct sigc::trackable' changed:
+            details were reported earlier
+        1 data member change:
+          type of 'sigc::internal::signal_impl* sigc::signal_base::impl_' changed:
+            pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+
+  [C] 'method bool sigc::signal_base::blocked()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
+      in pointed to type 'const sigc::signal_base':
+        unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
+
+  [C] 'method void sigc::signal_base::clear()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
+
   [C] 'method sigc::signal_base::iterator_type sigc::signal_base::connect(const sigc::slot_base&)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef sigc::internal::signal_impl::iterator_type' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
     parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
       in referenced type 'const sigc::slot_base':
         unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
@@ -103,33 +226,23 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   [C] 'method sigc::signal_base::iterator_type sigc::signal_base::erase(sigc::signal_base::iterator_type)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef sigc::internal::signal_impl::iterator_type' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
     parameter 1 of type 'typedef sigc::signal_base::iterator_type' changed:
       underlying type 'typedef sigc::internal::signal_impl::iterator_type' changed, as reported earlier
 
   [C] 'method sigc::internal::signal_impl* sigc::signal_base::impl()' has some indirect sub-type changes:
     return type changed:
-      in pointed to type 'struct sigc::internal::signal_impl':
-        type size changed from 192 to 256 (in bits)
-        1 data member change:
-          type of 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> > sigc::internal::signal_impl::slots_' changed:
-            type name changed from 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >'
-            type size changed from 128 to 192 (in bits)
-            1 base class change:
-              'class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' changed:
-                type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >'
-                type size changed from 128 to 192 (in bits)
-                1 data member change:
-                  type of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed:
-                    type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl'
-                    type size changed from 128 to 192 (in bits)
-                    1 data member change:
-                      type of 'std::__detail::_List_node_base std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed, as reported earlier
-                      and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node'
-                  and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl'
+      pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+    implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
+      in pointed to type 'const sigc::signal_base':
+        unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
 
   [C] 'method sigc::signal_base::iterator_type sigc::signal_base::insert(sigc::signal_base::iterator_type, const sigc::slot_base&)' has some indirect sub-type changes:
     return type changed:
       underlying type 'typedef sigc::internal::signal_impl::iterator_type' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
     parameter 1 of type 'typedef sigc::signal_base::iterator_type' changed:
       underlying type 'typedef sigc::internal::signal_impl::iterator_type' changed, as reported earlier
     parameter 2 of type 'const sigc::slot_base&' has sub-type changes:
@@ -138,48 +251,119 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   [C] 'method sigc::signal_base& sigc::signal_base::operator=(const sigc::signal_base&)' has some indirect sub-type changes:
     return type changed:
-      in referenced type 'struct sigc::signal_base':
-        type size hasn't changed
-        1 base class change:
-          'struct sigc::trackable' changed:
-            details were reported earlier
-        1 data member change:
-          type of 'sigc::internal::signal_impl* sigc::signal_base::impl_' changed:
-            pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
+      referenced type 'struct sigc::signal_base' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
     parameter 1 of type 'const sigc::signal_base&' has sub-type changes:
       in referenced type 'const sigc::signal_base':
         unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
 
   [C] 'method sigc::signal_base::signal_base(const sigc::signal_base&)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
     parameter 1 of type 'const sigc::signal_base&' has sub-type changes:
       in referenced type 'const sigc::signal_base':
         unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
 
+  [C] 'method sigc::signal_base::size_type sigc::signal_base::size()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
+      in pointed to type 'const sigc::signal_base':
+        unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
+
+  [C] 'method void sigc::signal_base::unblock()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
+      pointed to type 'struct sigc::signal_base' changed, as reported earlier
+
+  [C] 'method void sigc::slot_base::add_destroy_notify_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::slot_base*' has sub-type changes:
+      in pointed to type 'const sigc::slot_base':
+        unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method bool sigc::slot_base::block(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method void sigc::slot_base::disconnect()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method bool sigc::slot_base::operator bool()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::slot_base*' has sub-type changes:
+      in pointed to type 'const sigc::slot_base':
+        unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
+
   [C] 'method sigc::slot_base& sigc::slot_base::operator=(const sigc::slot_base&)' has some indirect sub-type changes:
     return type changed:
       referenced type 'class sigc::slot_base' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
     parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
       in referenced type 'const sigc::slot_base':
         unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
 
+  [C] 'method void sigc::slot_base::remove_destroy_notify_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::slot_base*' has sub-type changes:
+      in pointed to type 'const sigc::slot_base':
+        unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method void sigc::slot_base::set_parent(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::slot_base*' has sub-type changes:
+      in pointed to type 'const sigc::slot_base':
+        unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
+
   [C] 'method sigc::slot_base::slot_base(const sigc::slot_base&)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
     parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
       in referenced type 'const sigc::slot_base':
         unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
 
+  [C] 'method bool sigc::slot_base::unblock()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method sigc::slot_base::~slot_base(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
+      pointed to type 'class sigc::slot_base' changed, as reported earlier
+
+  [C] 'method void sigc::trackable::add_destroy_notify_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::trackable*' has sub-type changes:
+      in pointed to type 'const sigc::trackable':
+        unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
+
   [C] 'method sigc::internal::trackable_callback_list* sigc::trackable::callback_list()' has some indirect sub-type changes:
     return type changed:
       pointed to type 'struct sigc::internal::trackable_callback_list' changed, as reported earlier
+    implicit parameter 0 of type 'const sigc::trackable*' has sub-type changes:
+      in pointed to type 'const sigc::trackable':
+        unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
+
+  [C] 'method void sigc::trackable::notify_callbacks()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
+      pointed to type 'struct sigc::trackable' changed, as reported earlier
 
   [C] 'method sigc::trackable& sigc::trackable::operator=(const sigc::trackable&)' has some indirect sub-type changes:
     return type changed:
       referenced type 'struct sigc::trackable' changed, as reported earlier
+    implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
+      pointed to type 'struct sigc::trackable' changed, as reported earlier
     parameter 1 of type 'const sigc::trackable&' has sub-type changes:
       in referenced type 'const sigc::trackable':
         unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
 
+  [C] 'method void sigc::trackable::remove_destroy_notify_callback(void*)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const sigc::trackable*' has sub-type changes:
+      in pointed to type 'const sigc::trackable':
+        unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
+
   [C] 'method sigc::trackable::trackable(const sigc::trackable&)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
+      pointed to type 'struct sigc::trackable' changed, as reported earlier
     parameter 1 of type 'const sigc::trackable&' has sub-type changes:
       in referenced type 'const sigc::trackable':
         unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
 
+  [C] 'method sigc::trackable::trackable()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
+      pointed to type 'struct sigc::trackable' changed, as reported earlier
+
diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
index fe5064c..d74f520 100644
--- a/tests/data/test-abidiff/test-struct1-report.txt
+++ b/tests/data/test-abidiff/test-struct1-report.txt
@@ -3,6 +3,10 @@ 
     type size changed from 192 to 256 (in bits)
     1 member function insertion:
       'method virtual int s0::foo(int, char) const', virtual at voffset 2/2
+    1 member function change:
+      'method virtual s0::__deleting_dtor ()' has some sub-type changes:
+        parameter 1 of type 's0*' has sub-type changes:
+          pointed to type 'class s0' changed, as being reported
     1 data member deletion:
       'char s0::m1', at offset 96 (in bits)
     1 data member insertion:
diff --git a/tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt b/tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt
index 3fce90b..7f7f504 100644
--- a/tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt
+++ b/tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (57 filtered out), 0 Added functions
+Functions changes summary: 0 Removed, 0 Changed (217 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added variable
 
diff --git a/tests/data/test-diff-dwarf/test0-report.txt b/tests/data/test-diff-dwarf/test0-report.txt
index d8a213a..891859e 100644
--- a/tests/data/test-diff-dwarf/test0-report.txt
+++ b/tests/data/test-diff-dwarf/test0-report.txt
@@ -1,21 +1,33 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 3 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
 
   [A] 'method int S0::get_member0() const'
 
-1 function with some indirect sub-type change:
+3 functions with some indirect sub-type change:
+
+  [C] 'method void B0S0::member0() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const B0S0*' has sub-type changes:
+      in pointed to type 'const B0S0':
+        in unqualified underlying type 'class B0S0':
+          type size changed from 64 to 96 (in bits)
+          1 data member insertion:
+            'unsigned int B0S0::m2', at offset 64 (in bits)
+
+  [C] 'method void S0::member0() const' has some indirect sub-type changes:
+    'method void S0::member0() const' access changed from 'private' to 'public'
+    implicit parameter 0 of type 'const S0*' has sub-type changes:
+      in pointed to type 'const S0':
+        in unqualified underlying type 'class S0':
+          type size changed from 96 to 128 (in bits)
+          1 base class change:
+            'class B0S0' changed:
+              details were reported earlier
+          1 data member change:
+            'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits), access changed from 'private' to 'protected'
 
   [C] 'function void foo(S0&, S1*)' has some indirect sub-type changes:
     parameter 1 of type 'S0&' has sub-type changes:
-      in referenced type 'class S0':
-        type size changed from 96 to 128 (in bits)
-        1 base class change:
-          'class B0S0' changed:
-            type size changed from 64 to 96 (in bits)
-            1 data member insertion:
-              'unsigned int B0S0::m2', at offset 64 (in bits)
-        1 data member change:
-          'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits), access changed from 'private' to 'protected'
+      referenced type 'class S0' changed, as reported earlier
 
diff --git a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt
index f18439f..34454f1 100644
--- a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt
+++ b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt
@@ -15,6 +15,9 @@  Variable symbols changes summary: 0 Removed, 3 Added variable symbols not refere
   [C] 'method void S::bar()' has some indirect sub-type changes:
     method void S::bar() is now declared virtual
       note that this is an ABI incompatible change to the vtable of struct S
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
+        type struct S was a declaration-only type and is now a defined type
 
 3 Added variable symbols not referenced by debug info:
 
diff --git a/tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt
index 423ddbe..b1fa4b3 100644
--- a/tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt
+++ b/tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 0 Changed, 1 Added function
+Functions changes summary: 0 Removed, 3 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
@@ -6,3 +6,33 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   [A] 'method virtual void S::fn1()'
     note that this adds a new entry to the vtable of struct S
 
+3 functions with some indirect sub-type change:
+
+  [C] 'method virtual void S::fn0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
+        type size hasn't changed
+        1 member function insertion:
+          'method virtual void S::fn1()', virtual at voffset 3/3
+        4 member function changes:
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual void S::fn0()' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
diff --git a/tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt
index 64e5604..f76d694 100644
--- a/tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt
+++ b/tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 4 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
@@ -6,9 +6,44 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   [A] 'method virtual void S::fvtable_breaker()'
     note that this adds a new entry to the vtable of struct S
 
-1 function with some indirect sub-type change:
+4 functions with some indirect sub-type change:
+
+  [C] 'method virtual void S::fn0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
+        type size hasn't changed
+        1 member function insertion:
+          'method virtual void S::fvtable_breaker()', virtual at voffset 3/4
+        5 member function changes:
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual void S::fn0()' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual void S::fn1()' has some sub-type changes:
+            the vtable offset of method virtual void S::fn1() changed from 3 to 4
+              note that this is an ABI incompatible change to the vtable of struct S
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
 
   [C] 'method virtual void S::fn1()' has some indirect sub-type changes:
     the vtable offset of method virtual void S::fn1() changed from 3 to 4
       note that this is an ABI incompatible change to the vtable of struct S
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
 
diff --git a/tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt
index 624c123..d7b596e 100644
--- a/tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt
+++ b/tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 1 Removed, 1 Changed, 0 Added functions
+Functions changes summary: 1 Removed, 3 Changed, 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Removed function:
@@ -6,9 +6,37 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   [D] 'method virtual void S::fn0()'
     note that this removes an entry from the vtable of struct S
 
-1 function with some indirect sub-type change:
+3 functions with some indirect sub-type change:
 
   [C] 'method virtual void S::fn1()' has some indirect sub-type changes:
     the vtable offset of method virtual void S::fn1() changed from 3 to 2
       note that this is an ABI incompatible change to the vtable of struct S
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
+        type size hasn't changed
+        1 member function deletion:
+          'method virtual void S::fn0()', virtual at voffset 2/3
+        4 member function changes:
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual S::~S(int)' has some sub-type changes:
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+          'method virtual void S::fn1()' has some sub-type changes:
+            the vtable offset of method virtual void S::fn1() changed from 3 to 2
+              note that this is an ABI incompatible change to the vtable of struct S
+            implicit parameter 0 of type 'S*' has sub-type changes:
+              pointed to type 'struct S' changed, as being reported
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'method virtual S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
 
diff --git a/tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt b/tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt
index 5415622..4f4a765 100644
--- a/tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt
+++ b/tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt
@@ -1,12 +1,24 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 4 Changed, 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
-1 function with some indirect sub-type change:
+4 functions with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
+  [C] 'method S::S()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
         type size changed from 32 to 64 (in bits)
         1 data member insertion:
           'int S::m1', at offset 32 (in bits)
 
+  [C] 'method S::S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'method S::~S(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      pointed to type 'struct S' changed, as reported earlier
+
+  [C] 'function void foo(S&)' has some indirect sub-type changes:
+    parameter 1 of type 'S&' has sub-type changes:
+      referenced type 'struct S' changed, as reported earlier
+
diff --git a/tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt b/tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt
index 78f91a5..fad1ed9 100644
--- a/tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt
+++ b/tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt
@@ -1,16 +1,38 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 3 Changed, 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
-1 function with some indirect sub-type change:
+3 functions with some indirect sub-type change:
 
-  [C] 'function Interface* make_interface()' has some indirect sub-type changes:
-    return type changed:
+  [C] 'method virtual Interface::~Interface(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'Interface*' has sub-type changes:
       in pointed to type 'class Interface':
         type size hasn't changed
         1 member function insertion:
           'method virtual void Interface::method2()', virtual at voffset 3/4
-        1 member function change:
+        5 member function changes:
+          'method virtual Interface::~Interface(int)' has some sub-type changes:
+            implicit parameter 0 of type 'Interface*' has sub-type changes:
+              pointed to type 'class Interface' changed, as being reported
+          'method virtual Interface::~Interface(int)' has some sub-type changes:
+            implicit parameter 0 of type 'Interface*' has sub-type changes:
+              pointed to type 'class Interface' changed, as being reported
+          'method virtual Interface::~Interface(int)' has some sub-type changes:
+            implicit parameter 0 of type 'Interface*' has sub-type changes:
+              pointed to type 'class Interface' changed, as being reported
+          'method virtual void Interface::method1()' has some sub-type changes:
+            implicit parameter 0 of type 'Interface*' has sub-type changes:
+              pointed to type 'class Interface' changed, as being reported
           'method virtual void Interface::method3()' has some sub-type changes:
             the vtable offset of method virtual void Interface::method3() changed from 3 to 4
               note that this is an ABI incompatible change to the vtable of class Interface
+            implicit parameter 0 of type 'Interface*' has sub-type changes:
+              pointed to type 'class Interface' changed, as being reported
+
+  [C] 'method virtual Interface::~Interface(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'Interface*' has sub-type changes:
+      pointed to type 'class Interface' changed, as reported earlier
+
+  [C] 'function Interface* make_interface()' has some indirect sub-type changes:
+    return type changed:
+      pointed to type 'class Interface' changed, as reported earlier
 
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 087cfd4..bc30722 100644
--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
@@ -25,12 +25,24 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   [C] 'method void std::_Head_base<0ul, STR&&, false>::_Head_base<STR>(STR&&)' has some indirect sub-type changes:
     'method void std::_Head_base<0ul, STR&&, false>::_Head_base<STR>(STR&&) {_ZNSt10_Head_baseILm0EO3STRLb0EEC2IS0_St9true_typeEEOT_}' now becomes 'method void std::_Head_base<0, STR &&, false>::_Head_base<STR, std::true_type>(STR&&) {_ZNSt10_Head_baseILm0EO3STRLb0EEC2IS0_St9true_typeEEOT_}'
+    implicit parameter 0 of type 'std::_Head_base<0ul, STR&&, false>*' changed:
+      in pointed to type 'struct std::_Head_base<0ul, STR&&, false>':
+        type name changed from 'std::_Head_base<0ul, STR&&, false>' to 'std::_Head_base<0, STR &&, false>'
+        type size hasn't changed
+        1 data member change:
+          name of 'std::_Head_base<0ul, STR&&, false>::_M_head_impl' changed to 'std::_Head_base<0, STR &&, false>::_M_head_impl'
 
   [C] 'method STR& std::_Head_base<0ul, STR&&, false>::_M_head()' has some indirect sub-type changes:
     'method STR& std::_Head_base<0ul, STR&&, false>::_M_head() {_ZNSt10_Head_baseILm0EO3STRLb0EE7_M_headERKS2_}' now becomes 'method STR& std::_Head_base<0, STR &&, false>::_M_head() {_ZNSt10_Head_baseILm0EO3STRLb0EE7_M_headERKS2_}'
+    parameter 1 of type 'const std::_Head_base<0ul, STR&&, false>&' changed:
+      in referenced type 'const std::_Head_base<0ul, STR&&, false>':
+        'const std::_Head_base<0ul, STR&&, false>' changed to 'const std::_Head_base<0, STR &&, false>'
 
   [C] 'method STR& std::_Tuple_impl<0ul, STR&&>::_M_head()' has some indirect sub-type changes:
     'method STR& std::_Tuple_impl<0ul, STR&&>::_M_head() {_ZNSt11_Tuple_implILm0EJO3STREE7_M_headERKS2_}' now becomes 'method STR& std::_Tuple_impl<0, STR &&>::_M_head() {_ZNSt11_Tuple_implILm0EJO3STREE7_M_headERKS2_}'
+    parameter 1 of type 'const std::_Tuple_impl<0ul, STR&&>&' changed:
+      in referenced type 'const std::_Tuple_impl<0ul, STR&&>':
+        'const std::_Tuple_impl<0ul, STR&&>' changed to 'const std::_Tuple_impl<0, STR &&>'
 
   [C] 'method void std::_Tuple_impl<0ul, STR&&>::_Tuple_impl<STR>(STR&&)' has some indirect sub-type changes:
     Please note that the symbol of this function is _ZNSt11_Tuple_implILm0EJO3STREEC2IS0_JESt10false_typeEEOT_DpOT0_
@@ -38,6 +50,16 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     linkage names of method void std::_Tuple_impl<0ul, STR&&>::_Tuple_impl<STR>(STR&&)
     changed from '_ZNSt11_Tuple_implILm0EJO3STREEC2IS0_JESt10false_typeEEOT_DpOT0_, _ZNSt11_Tuple_implILm0EJO3STREEC1IS0_JESt10false_typeEEOT_DpOT0_' to '_ZNSt11_Tuple_implILm0EJO3STREEC2IS0_JESt10false_typeEEOT_DpOT0_'
     'method void std::_Tuple_impl<0ul, STR&&>::_Tuple_impl<STR>(STR&&) {_ZNSt11_Tuple_implILm0EJO3STREEC2IS0_JESt10false_typeEEOT_DpOT0_, _ZNSt11_Tuple_implILm0EJO3STREEC1IS0_JESt10false_typeEEOT_DpOT0_}' now becomes 'method void std::_Tuple_impl<0, STR &&>::_Tuple_impl<STR, std::false_type>(STR&&) {_ZNSt11_Tuple_implILm0EJO3STREEC2IS0_JESt10false_typeEEOT_DpOT0_}'
+    implicit parameter 0 of type 'std::_Tuple_impl<0ul, STR&&>*' changed:
+      in pointed to type 'struct std::_Tuple_impl<0ul, STR&&>':
+        type name changed from 'std::_Tuple_impl<0ul, STR&&>' to 'std::_Tuple_impl<0, STR &&>'
+        type size hasn't changed
+        2 base class deletions:
+          struct std::_Head_base<0ul, STR&&, false>
+          struct std::_Tuple_impl<1ul>
+        2 base class insertions:
+          struct std::_Head_base<0, STR &&, false>
+          struct std::_Tuple_impl<1>
 
   [C] 'function std::__add_c_ref<STR&&>::type std::__get_helper<0ul, STR&&>(const std::_Tuple_impl<0ul, STR&&>&)' has some indirect sub-type changes:
     'function std::__add_c_ref<STR&&>::type std::__get_helper<0ul, STR&&>(const std::_Tuple_impl<0ul, STR&&>&) {_ZSt12__get_helperILm0EO3STRJEENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJS3_DpT1_EE}' now becomes 'function std::__add_c_ref<STR &&>::type std::__get_helper<0, STR &&>(const std::_Tuple_impl<0, STR &&>&) {_ZSt12__get_helperILm0EO3STRJEENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJS3_DpT1_EE}'
@@ -67,6 +89,8 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     linkage names of method void std::tuple<STR&&>::tuple<STR>(STR&&)
     changed from '_ZNSt5tupleIJO3STREEC2IJS0_ESt9true_typeEEDpOT_, _ZNSt5tupleIJO3STREEC1IJS0_ESt9true_typeEEDpOT_' to '_ZNSt5tupleIJO3STREEC2IJS0_ESt9true_typeEEDpOT_'
     'method void std::tuple<STR&&>::tuple<STR>(STR&&) {_ZNSt5tupleIJO3STREEC2IJS0_ESt9true_typeEEDpOT_, _ZNSt5tupleIJO3STREEC1IJS0_ESt9true_typeEEDpOT_}' now becomes 'method void std::tuple<STR &&>::tuple<STR, std::true_type>(STR&&) {_ZNSt5tupleIJO3STREEC2IJS0_ESt9true_typeEEDpOT_}'
+    implicit parameter 0 of type 'std::tuple<STR&&>*' changed:
+      pointed to type 'class std::tuple<STR&&>' changed, as reported earlier
 
   [C] 'function void tpl<std::tuple<STR&&> >(std::tuple<STR&&>)' has some indirect sub-type changes:
     'function void tpl<std::tuple<STR&&> >(std::tuple<STR&&>) {_Z3tplISt5tupleIJO3STREEEvT_}' now becomes 'function void tpl<std::tuple<STR &&> >(std::tuple<STR &&>) {_Z3tplISt5tupleIJO3STREEEvT_}'
diff --git a/tests/data/test-diff-dwarf/test5-report.txt b/tests/data/test-diff-dwarf/test5-report.txt
index 63d7ffa..6cf7522 100644
--- a/tests/data/test-diff-dwarf/test5-report.txt
+++ b/tests/data/test-diff-dwarf/test5-report.txt
@@ -1,12 +1,17 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
-1 function with some indirect sub-type change:
+2 functions with some indirect sub-type change:
 
-  [C] 'function C0 foo()' has some indirect sub-type changes:
-    return type changed:
-      entity changed from 'class C0' to compatible type 'typedef c0_type'
+  [C] 'method C0::C0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'C0*' has sub-type changes:
+      in pointed to type 'class C0':
         type size hasn't changed
         1 data member change:
           'int C0::m0' access changed from 'private' to 'public'
 
+  [C] 'function C0 foo()' has some indirect sub-type changes:
+    return type changed:
+      entity changed from 'class C0' to compatible type 'typedef c0_type'
+        details were reported earlier
+
diff --git a/tests/data/test-diff-dwarf/test8-report.txt b/tests/data/test-diff-dwarf/test8-report.txt
index 59834a5..26e0c10 100644
--- a/tests/data/test-diff-dwarf/test8-report.txt
+++ b/tests/data/test-diff-dwarf/test8-report.txt
@@ -1,21 +1,26 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 3 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
 
   [A] 'method B1::B1()'
 
-1 function with some indirect sub-type change:
+3 functions with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
+  [C] 'method B0::B0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'B0*' has sub-type changes:
+      in pointed to type 'struct B0':
+        type size hasn't changed
+        1 data member change:
+          'char B0::m0' access changed from 'public' to 'private'
+
+  [C] 'method S::S()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
         type size changed from 64 to 96 (in bits)
         1 base class change:
           'struct B0' changed:
-            type size hasn't changed
-            1 data member change:
-              'char B0::m0' access changed from 'public' to 'private'
+            details were reported earlier
         1 base class insertion:
           class B1
         1 data member change:
@@ -24,3 +29,7 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
             type size changed from 32 to 8 (in bits)
           and offset changed from 32 to 64 (in bits) (by +32 bits), access changed from 'public' to 'private'
 
+  [C] 'function void foo(S&)' has some indirect sub-type changes:
+    parameter 1 of type 'S&' has sub-type changes:
+      referenced type 'struct S' changed, as reported earlier
+
diff --git a/tests/data/test-diff-filter/test0-report.txt b/tests/data/test-diff-filter/test0-report.txt
index afa8757..ef7518b 100644
--- a/tests/data/test-diff-filter/test0-report.txt
+++ b/tests/data/test-diff-filter/test0-report.txt
@@ -1,23 +1,30 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 2 Changed (1 filtered out), 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
 
   [A] 'method int S0::get_member0() const'
 
-1 function with some indirect sub-type change:
+2 functions with some indirect sub-type change:
 
-  [C] 'function void foo(S0&, S1*)' has some indirect sub-type changes:
-    parameter 1 of type 'S0&' has sub-type changes:
-      in referenced type 'class S0':
-        type size changed from 96 to 128 (in bits)
-        1 base class change:
-          'class B0S0' changed:
-            type size changed from 64 to 96 (in bits)
-            1 data member insertion:
-              'unsigned int B0S0::m2', at offset 32 (in bits)
-            1 data member change:
-              'char B0S0::m1' offset changed from 32 to 64 (in bits) (by +32 bits)
-        1 data member change:
-          'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits)
+  [C] 'method void B0S0::member0() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const B0S0*' has sub-type changes:
+      in pointed to type 'const B0S0':
+        in unqualified underlying type 'class B0S0':
+          type size changed from 64 to 96 (in bits)
+          1 data member insertion:
+            'unsigned int B0S0::m2', at offset 32 (in bits)
+          1 data member change:
+            'char B0S0::m1' offset changed from 32 to 64 (in bits) (by +32 bits)
+
+  [C] 'method void S0::member0() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S0*' has sub-type changes:
+      in pointed to type 'const S0':
+        in unqualified underlying type 'class S0':
+          type size changed from 96 to 128 (in bits)
+          1 base class change:
+            'class B0S0' changed:
+              details were reported earlier
+          1 data member change:
+            'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits)
 
diff --git a/tests/data/test-diff-filter/test01-report.txt b/tests/data/test-diff-filter/test01-report.txt
index 73b907e..b8d1872 100644
--- a/tests/data/test-diff-filter/test01-report.txt
+++ b/tests/data/test-diff-filter/test01-report.txt
@@ -1,23 +1,35 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 3 Changed, 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
 
   [A] 'method int S0::get_member0() const'
 
-1 function with some indirect sub-type change:
+3 functions with some indirect sub-type change:
+
+  [C] 'method void B0S0::member0() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const B0S0*' has sub-type changes:
+      in pointed to type 'const B0S0':
+        in unqualified underlying type 'class B0S0':
+          type size changed from 64 to 96 (in bits)
+          1 data member insertion:
+            'unsigned int B0S0::m2', at offset 32 (in bits)
+          1 data member change:
+            'char B0S0::m1' offset changed from 32 to 64 (in bits) (by +32 bits)
+
+  [C] 'method void S0::member0() const' has some indirect sub-type changes:
+    'method void S0::member0() const' access changed from 'private' to 'public'
+    implicit parameter 0 of type 'const S0*' has sub-type changes:
+      in pointed to type 'const S0':
+        in unqualified underlying type 'class S0':
+          type size changed from 96 to 128 (in bits)
+          1 base class change:
+            'class B0S0' changed:
+              details were reported earlier
+          1 data member change:
+            'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits), access changed from 'private' to 'protected'
 
   [C] 'function void foo(S0&, S1*)' has some indirect sub-type changes:
     parameter 1 of type 'S0&' has sub-type changes:
-      in referenced type 'class S0':
-        type size changed from 96 to 128 (in bits)
-        1 base class change:
-          'class B0S0' changed:
-            type size changed from 64 to 96 (in bits)
-            1 data member insertion:
-              'unsigned int B0S0::m2', at offset 32 (in bits)
-            1 data member change:
-              'char B0S0::m1' offset changed from 32 to 64 (in bits) (by +32 bits)
-        1 data member change:
-          'int S0::m0' offset changed from 64 to 96 (in bits) (by +32 bits), access changed from 'private' to 'protected'
+      referenced type 'class S0' changed, as reported earlier
 
diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
index 4d08d4b..35577b0 100644
--- a/tests/data/test-diff-filter/test10-report.txt
+++ b/tests/data/test-diff-filter/test10-report.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 2 Removed, 1 Changed, 0 Added functions
+Functions changes summary: 2 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 2 Removed functions:
@@ -8,9 +8,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
+  [C] 'method int S::mem_fn0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
         type size changed from 32 to 8 (in bits)
         1 data member deletion:
           'unsigned int S::m', at offset 0 (in bits)
diff --git a/tests/data/test-diff-filter/test13-report.txt b/tests/data/test-diff-filter/test13-report.txt
index 17844fa..edec807 100644
--- a/tests/data/test-diff-filter/test13-report.txt
+++ b/tests/data/test-diff-filter/test13-report.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
@@ -7,9 +7,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
+  [C] 'method S::S()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
         type size changed from 64 to 96 (in bits)
         no base class change (1 filtered);
         1 base class insertion:
diff --git a/tests/data/test-diff-filter/test2-report.txt b/tests/data/test-diff-filter/test2-report.txt
index 3e68ab6..1755df6 100644
--- a/tests/data/test-diff-filter/test2-report.txt
+++ b/tests/data/test-diff-filter/test2-report.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 2 Changed, 1 Added functions
+Functions changes summary: 0 Removed, 2 Changed (3 filtered out), 1 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 Added function:
@@ -7,9 +7,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 2 functions with some indirect sub-type change:
 
-  [C] 'function void bar(C1&)' has some indirect sub-type changes:
-    parameter 1 of type 'C1&' has sub-type changes:
-      in referenced type 'class C1':
+  [C] 'method C1::C1()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'C1*' has sub-type changes:
+      in pointed to type 'class C1':
         type size changed from 8 to 64 (in bits)
         1 data member insertion:
           'int C1::m1', at offset 32 (in bits)
diff --git a/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt b/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt
index 5db38b2..cd0c04b 100644
--- a/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt
+++ b/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
+Functions changes summary: 0 Removed, 1 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
diff --git a/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt b/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt
index 95dd372..e7de99b 100644
--- a/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt
+++ b/tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt
@@ -1,7 +1,7 @@ 
-Functions changes summary: 0 Removed, 3 Changed, 0 Added functions
+Functions changes summary: 0 Removed, 4 Changed, 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
-3 functions with some indirect sub-type change:
+4 functions with some indirect sub-type change:
 
   [C] 'function void bar(s*)' has some indirect sub-type changes:
     parameter 1 of type 's*' has sub-type changes:
@@ -16,7 +16,13 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   [C] 'method s::s(const s&)' has some indirect sub-type changes:
     'method s::s(const s&)' access changed from 'public' to 'private'
+    implicit parameter 0 of type 's*' has sub-type changes:
+      pointed to type 'class s' changed, as reported earlier
     parameter 1 of type 'const s&' has sub-type changes:
       in referenced type 'const s':
         unqualified underlying type 'class s' changed, as reported earlier
 
+  [C] 'method s::s()' has some indirect sub-type changes:
+    implicit parameter 0 of type 's*' has sub-type changes:
+      pointed to type 'class s' changed, as reported earlier
+
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 c4b3a76..c8c6e48 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 82 Removed, 6 Changed (14 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 6 Changed (31 filtered out), 1081 Added functions
 Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
 Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1174,6 +1174,124 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
 
 6 functions with some indirect sub-type change:
 
+  [C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'Engine*' has sub-type changes:
+      in pointed to type 'struct Engine':
+        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)
+          'mutex_t Engine::m_stream_lock', at offset 3456 (in bits)
+          'int Engine::m_num_cores', at offset 3776 (in bits)
+          'int Engine::m_num_threads', at offset 3808 (in bits)
+          'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits)
+          'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits)
+        4 data member changes:
+          type of 'Engine::PtrSet Engine::m_ptr_set' changed:
+            entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable'
+              type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
+              type size changed from 384 to 704 (in bits)
+              1 data member insertion:
+                'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits)
+              1 data member change:
+                type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
+                  typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet
+                  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>'
+                              type size changed from 8 to 384 (in bits)
+                              1 base class deletion:
+                                struct std::binary_function<PtrData, PtrData, bool>
+                              1 base class insertion:
+                                class std::allocator<std::_Rb_tree_node<PtrData> >
+                              3 data member insertions:
+                                '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', at offset 0 (in bits)
+                                '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)
+                            and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl'
+                      and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t'
+                and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list'
+          'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
+          'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
+          type of 'coifunction* Engine::m_funcs[6]' changed:
+            type name changed from 'coifunction*[6]' to 'coifunction*[7]'
+            array type size changed from 384 to 448
+            array type subrange 1 changed length from 6 to 7
+          and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
+
+  [C] 'method void OffloadDescriptor::cleanup()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'OffloadDescriptor*' has sub-type changes:
+      in pointed to type 'struct OffloadDescriptor':
+        type size changed from 2240 to 2368 (in bits)
+        9 data member insertions:
+          'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits)
+          'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits)
+          'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits)
+          '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits)
+          'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits)
+          'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits)
+          'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits)
+          'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits)
+          'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits)
+        8 data member changes (2 filtered):
+          'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
+          'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
+          type of 'VarDesc* OffloadDescriptor::m_vars' changed:
+            in pointed to type 'struct VarDesc':
+              type size hasn't changed
+              1 data member change:
+                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;}
+                    to:
+                      struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
+          type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
+            in pointed to type 'struct OffloadDescriptor::VarExtra':
+              type size changed from 576 to 640 (in bits)
+              2 data member insertions:
+                'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits)
+                'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits)
+              4 data member changes (3 filtered):
+                'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
+                type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
+                  in pointed to type 'struct CeanReadRanges':
+                    type size changed from 512 to 576 (in bits)
+                    1 data member insertion:
+                      'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits)
+                    7 data member changes:
+                      'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
+                      'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
+                      'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
+                and offset changed from 384 to 448 (in bits) (by +64 bits)
+                'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
+                'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
+          'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
+          'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
+
   [C] 'method void OffloadDescriptor::report_coi_error(error_types, COIRESULT)' has some indirect sub-type changes:
     parameter 1 of type 'typedef error_types' changed:
       underlying type 'enum __anonymous_enum__' changed:
@@ -1294,20 +1412,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__::c_report_myorelease' from value '122' to '126'
           '__anonymous_enum__::c_coipipe_max_number' from value '123' to '133'
 
-  [C] 'method bool OffloadDescriptor::setup_descriptors(VarDesc*, VarDesc2*, int, int, void*)' has some indirect sub-type changes:
-    parameter 1 of type 'VarDesc*' has sub-type changes:
-      in pointed to type 'struct VarDesc':
-        type size hasn't changed
-        1 data member change:
-          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;}
-              to:
-                struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
-
   [C] 'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' has some indirect sub-type changes:
     parameter 1 of type 'InitTableEntry*' changed:
       in pointed to type 'struct InitTableEntry':
@@ -1320,111 +1424,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                 parameter 1 of type 'typedef MyoArena' was added
             and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func'
 
-  [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' has some indirect sub-type changes:
-    parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
-      underlying type 'OffloadDescriptor*' changed:
-        in pointed to type 'struct OffloadDescriptor':
-          type size changed from 2240 to 2368 (in bits)
-          9 data member insertions:
-            'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits)
-            'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits)
-            'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits)
-            '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits)
-            'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits)
-            'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits)
-            'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits)
-            'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits)
-            'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits)
-          8 data member changes (2 filtered):
-            type of 'Engine& OffloadDescriptor::m_device' changed:
-              in referenced type 'struct Engine':
-                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)
-                  'mutex_t Engine::m_stream_lock', at offset 3456 (in bits)
-                  'int Engine::m_num_cores', at offset 3776 (in bits)
-                  'int Engine::m_num_threads', at offset 3808 (in bits)
-                  'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits)
-                  'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits)
-                4 data member changes:
-                  type of 'Engine::PtrSet Engine::m_ptr_set' changed:
-                    entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable'
-                      type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
-                      type size changed from 384 to 704 (in bits)
-                      1 data member insertion:
-                        'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits)
-                      1 data member change:
-                        type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
-                          typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet
-                          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>'
-                                      type size changed from 8 to 384 (in bits)
-                                      1 base class deletion:
-                                        struct std::binary_function<PtrData, PtrData, bool>
-                                      1 base class insertion:
-                                        class std::allocator<std::_Rb_tree_node<PtrData> >
-                                      3 data member insertions:
-                                        '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', at offset 0 (in bits)
-                                        '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)
-                                    and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl'
-                              and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t'
-                        and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list'
-                  'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
-                  'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
-                  type of 'coifunction* Engine::m_funcs[6]' changed:
-                    type name changed from 'coifunction*[6]' to 'coifunction*[7]'
-                    array type size changed from 384 to 448
-                    array type subrange 1 changed length from 6 to 7
-                  and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
-            'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
-            'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
-            type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
-              in pointed to type 'struct OffloadDescriptor::VarExtra':
-                type size changed from 576 to 640 (in bits)
-                2 data member insertions:
-                  'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits)
-                  'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits)
-                4 data member changes (3 filtered):
-                  'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
-                  type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
-                    in pointed to type 'struct CeanReadRanges':
-                      type size changed from 512 to 576 (in bits)
-                      1 data member insertion:
-                        'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits)
-                      7 data member changes:
-                        'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
-                        'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
-                        'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
-                  and offset changed from 384 to 448 (in bits) (by +64 bits)
-                  'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
-                  'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
-            'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
-            'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
-
   [C] 'function void __offload_register_image(void*)' has some indirect sub-type changes:
     return type changed:
       type name changed from 'void' to 'bool'
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 03c1542..55b1c0a 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 82 Removed, 6 Changed (14 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 6 Changed (31 filtered out), 1081 Added functions
 Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
 Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1174,6 +1174,124 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
 
 6 functions with some indirect sub-type change:
 
+  [C] 'method void Engine::fini_process(bool)' at offload_engine.h:560:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'Engine*' has sub-type changes:
+      in pointed to type 'struct Engine' at offload_engine.h:395:1:
+        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
+          'mutex_t Engine::m_stream_lock', at offset 3456 (in bits) at offload_engine.h:638:1
+          'int Engine::m_num_cores', at offset 3776 (in bits) at offload_engine.h:639:1
+          'int Engine::m_num_threads', at offset 3808 (in bits) at offload_engine.h:640:1
+          'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits) at offload_engine.h:641:1
+          'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits) at offload_engine.h:644:1
+        4 data member changes:
+          type of 'Engine::PtrSet Engine::m_ptr_set' changed:
+            entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable' at offload_engine.h:163:1
+              type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
+              type size changed from 384 to 704 (in bits)
+              1 data member insertion:
+                'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits) at offload_engine.h:204:1
+              1 data member change:
+                type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
+                  typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet at offload_engine.h:165:1
+                  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>'
+                              type size changed from 8 to 384 (in bits)
+                              1 base class deletion:
+                                struct std::binary_function<PtrData, PtrData, bool> at stl_function.h:118:1
+                              1 base class insertion:
+                                class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
+                              3 data member insertions:
+                                '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', at offset 0 (in bits) at stl_tree.h:592:1
+                                '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
+                            and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' at stl_tree.h:633:1
+                      and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' at stl_set.h:116:1
+                and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list' at offload_engine.h:203:1
+          'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
+          'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
+          type of 'coifunction* Engine::m_funcs[6]' changed:
+            type name changed from 'coifunction*[6]' to 'coifunction*[7]'
+            array type size changed from 384 to 448
+            array type subrange 1 changed length from 6 to 7
+          and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
+
+  [C] 'method void OffloadDescriptor::cleanup()' at offload_host.h:186:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'OffloadDescriptor*' has sub-type changes:
+      in pointed to type 'struct OffloadDescriptor' at offload_host.h:68:1:
+        type size changed from 2240 to 2368 (in bits)
+        9 data member insertions:
+          'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits) at offload_host.h:288:1
+          'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits) at offload_host.h:326:1
+          'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits) at offload_host.h:329:1
+          '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits) at offload_host.h:332:1
+          'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits) at offload_host.h:347:1
+          'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits) at offload_host.h:352:1
+          'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits) at offload_host.h:357:1
+          'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits) at offload_host.h:360:1
+          'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits) at offload_host.h:362:1
+        8 data member changes (2 filtered):
+          'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
+          'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
+          type of 'VarDesc* OffloadDescriptor::m_vars' changed:
+            in pointed to type 'struct VarDesc' at offload_common.h:254:1:
+              type size hasn't changed
+              1 data member change:
+                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;}
+                    to:
+                      struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
+          type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
+            in pointed to type 'struct OffloadDescriptor::VarExtra' at offload_host.h:216:1:
+              type size changed from 576 to 640 (in bits)
+              2 data member insertions:
+                'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits) at offload_host.h:222:1
+                'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits) at offload_host.h:227:1
+              4 data member changes (3 filtered):
+                'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
+                type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
+                  in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
+                    type size changed from 512 to 576 (in bits)
+                    1 data member insertion:
+                      'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits) at cean_util.h:59:1
+                    7 data member changes:
+                      'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
+                      'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
+                      'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
+                and offset changed from 384 to 448 (in bits) (by +64 bits)
+                'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
+                'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
+          'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
+          'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
+
   [C] 'method void OffloadDescriptor::report_coi_error(error_types, COIRESULT)' at offload_host.h:206:1 has some indirect sub-type changes:
     parameter 1 of type 'typedef error_types' changed:
       underlying type 'enum __anonymous_enum__' at liboffload_error_codes.h:38:1 changed:
@@ -1294,20 +1412,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__::c_report_myorelease' from value '122' to '126' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_coipipe_max_number' from value '123' to '133' at liboffload_error_codes.h:38:1
 
-  [C] 'method bool OffloadDescriptor::setup_descriptors(VarDesc*, VarDesc2*, int, int, void*)' at offload_host.h:157:1 has some indirect sub-type changes:
-    parameter 1 of type 'VarDesc*' has sub-type changes:
-      in pointed to type 'struct VarDesc' at offload_common.h:254:1:
-        type size hasn't changed
-        1 data member change:
-          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;}
-              to:
-                struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
-
   [C] 'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' at offload_myo_host.cpp:691:1 has some indirect sub-type changes:
     parameter 1 of type 'InitTableEntry*' changed:
       in pointed to type 'struct InitTableEntry' at offload_table.h:296:1:
@@ -1320,111 +1424,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                 parameter 1 of type 'typedef MyoArena' was added
             and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' at offload_table.h:295:1
 
-  [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' at compiler_if_host.cpp:456:1 has some indirect sub-type changes:
-    parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
-      underlying type 'OffloadDescriptor*' changed:
-        in pointed to type 'struct OffloadDescriptor' at offload_host.h:68:1:
-          type size changed from 2240 to 2368 (in bits)
-          9 data member insertions:
-            'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits) at offload_host.h:288:1
-            'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits) at offload_host.h:326:1
-            'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits) at offload_host.h:329:1
-            '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits) at offload_host.h:332:1
-            'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits) at offload_host.h:347:1
-            'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits) at offload_host.h:352:1
-            'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits) at offload_host.h:357:1
-            'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits) at offload_host.h:360:1
-            'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits) at offload_host.h:362:1
-          8 data member changes (2 filtered):
-            type of 'Engine& OffloadDescriptor::m_device' changed:
-              in referenced type 'struct Engine' at offload_engine.h:395:1:
-                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
-                  'mutex_t Engine::m_stream_lock', at offset 3456 (in bits) at offload_engine.h:638:1
-                  'int Engine::m_num_cores', at offset 3776 (in bits) at offload_engine.h:639:1
-                  'int Engine::m_num_threads', at offset 3808 (in bits) at offload_engine.h:640:1
-                  'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits) at offload_engine.h:641:1
-                  'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits) at offload_engine.h:644:1
-                4 data member changes:
-                  type of 'Engine::PtrSet Engine::m_ptr_set' changed:
-                    entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable' at offload_engine.h:163:1
-                      type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
-                      type size changed from 384 to 704 (in bits)
-                      1 data member insertion:
-                        'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits) at offload_engine.h:204:1
-                      1 data member change:
-                        type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
-                          typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet at offload_engine.h:165:1
-                          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>'
-                                      type size changed from 8 to 384 (in bits)
-                                      1 base class deletion:
-                                        struct std::binary_function<PtrData, PtrData, bool> at stl_function.h:118:1
-                                      1 base class insertion:
-                                        class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
-                                      3 data member insertions:
-                                        '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', at offset 0 (in bits) at stl_tree.h:592:1
-                                        '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
-                                    and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' at stl_tree.h:633:1
-                              and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' at stl_set.h:116:1
-                        and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list' at offload_engine.h:203:1
-                  'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
-                  'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
-                  type of 'coifunction* Engine::m_funcs[6]' changed:
-                    type name changed from 'coifunction*[6]' to 'coifunction*[7]'
-                    array type size changed from 384 to 448
-                    array type subrange 1 changed length from 6 to 7
-                  and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
-            'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
-            'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
-            type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
-              in pointed to type 'struct OffloadDescriptor::VarExtra' at offload_host.h:216:1:
-                type size changed from 576 to 640 (in bits)
-                2 data member insertions:
-                  'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits) at offload_host.h:222:1
-                  'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits) at offload_host.h:227:1
-                4 data member changes (3 filtered):
-                  'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
-                  type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
-                    in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
-                      type size changed from 512 to 576 (in bits)
-                      1 data member insertion:
-                        'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits) at cean_util.h:59:1
-                      7 data member changes:
-                        'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
-                        'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
-                        'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
-                  and offset changed from 384 to 448 (in bits) (by +64 bits)
-                  'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
-                  'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
-            'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
-            'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
-
   [C] 'function void __offload_register_image(void*)' at offload_host.cpp:5531:1 has some indirect sub-type changes:
     return type changed:
       type name changed from 'void' to 'bool'
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 f28bb6b..4b74ded 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 82 Removed, 6 Changed (14 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 6 Changed (31 filtered out), 1081 Added functions
 Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
 Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1174,6 +1174,124 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
 
 6 functions with some indirect sub-type change:
 
+  [C] 'method void Engine::fini_process(bool)' at offload_engine.h:560:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'Engine*' has sub-type changes:
+      in pointed to type 'struct Engine' at offload_engine.h:395:1:
+        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
+          'mutex_t Engine::m_stream_lock', at offset 0x1b0 (in bytes) at offload_engine.h:638:1
+          'int Engine::m_num_cores', at offset 0x1d8 (in bytes) at offload_engine.h:639:1
+          'int Engine::m_num_threads', at offset 0x1dc (in bytes) at offload_engine.h:640:1
+          'std::bitset<1024ul> Engine::m_cpus', at offset 0x1e0 (in bytes) at offload_engine.h:641:1
+          'DynLibList Engine::m_dyn_libs', at offset 0x260 (in bytes) at offload_engine.h:644:1
+        4 data member changes:
+          type of 'Engine::PtrSet Engine::m_ptr_set' changed:
+            entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable' at offload_engine.h:163:1
+              type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
+              type size changed from 0x30 to 0x58 (in bytes)
+              1 data member insertion:
+                'mutex_t PtrDataTable::m_ptr_lock', at offset 0x30 (in bytes) at offload_engine.h:204:1
+              1 data member change:
+                type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
+                  typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet at offload_engine.h:165:1
+                  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>'
+                              type size changed from 0x1 to 0x30 (in bytes)
+                              1 base class deletion:
+                                struct std::binary_function<PtrData, PtrData, bool> at stl_function.h:118:1
+                              1 base class insertion:
+                                class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
+                              3 data member insertions:
+                                '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', at offset 0 (in bytes) at stl_tree.h:592:1
+                                '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
+                            and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' at stl_tree.h:633:1
+                      and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' at stl_set.h:116:1
+                and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list' at offload_engine.h:203:1
+          'Engine::SignalMap Engine::m_signal_map' offset changed from 0xd0 to 0x128 (in bytes) (by +0x58 bytes)
+          'mutex_t Engine::m_signal_lock' offset changed from 0x100 to 0x158 (in bytes) (by +0x58 bytes)
+          type of 'coifunction* Engine::m_funcs[6]' changed:
+            type name changed from 'coifunction*[6]' to 'coifunction*[7]'
+            array type size changed from 0x180 to 0x1c0
+            array type subrange 1 changed length from 6 to 7
+          and offset changed from 0x128 to 0x278 (in bytes) (by +0x150 bytes)
+
+  [C] 'method void OffloadDescriptor::cleanup()' at offload_host.h:186:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'OffloadDescriptor*' has sub-type changes:
+      in pointed to type 'struct OffloadDescriptor' at offload_host.h:68:1:
+        type size changed from 0x118 to 0x128 (in bytes)
+        9 data member insertions:
+          'bool OffloadDescriptor::m_wait_all_devices', at offset 0x28 (in bytes) at offload_host.h:288:1
+          'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 0xe4 (in bytes) at offload_host.h:326:1
+          'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 0xf4 (in bytes) at offload_host.h:329:1
+          '_Offload_stream OffloadDescriptor::m_stream', at offset 0xf8 (in bytes) at offload_host.h:332:1
+          'bool OffloadDescriptor::m_initial_need_runfunction', at offset 0x119 (in bytes) at offload_host.h:347:1
+          'bool OffloadDescriptor::m_out_with_preallocated', at offset 0x11a (in bytes) at offload_host.h:352:1
+          'bool OffloadDescriptor::m_preallocated_alloc', at offset 0x11b (in bytes) at offload_host.h:357:1
+          'bool OffloadDescriptor::m_traceback_called', at offset 0x11c (in bytes) at offload_host.h:360:1
+          'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 0x120 (in bytes) at offload_host.h:362:1
+        8 data member changes (2 filtered):
+          'bool OffloadDescriptor::m_is_mandatory' offset changed from 0x28 to 0x29 (in bytes) (by +0x1 bytes)
+          'const bool OffloadDescriptor::m_is_openmp' offset changed from 0x29 to 0x2a (in bytes) (by +0x1 bytes)
+          type of 'VarDesc* OffloadDescriptor::m_vars' changed:
+            in pointed to type 'struct VarDesc' at offload_common.h:254:1:
+              type size hasn't changed
+              1 data member change:
+                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;}
+                    to:
+                      struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
+          type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
+            in pointed to type 'struct OffloadDescriptor::VarExtra' at offload_host.h:216:1:
+              type size changed from 0x48 to 0x50 (in bytes)
+              2 data member insertions:
+                'void* OffloadDescriptor::VarExtra::alloc', at offset 0x28 (in bytes) at offload_host.h:222:1
+                'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 0x4c (in bytes) at offload_host.h:227:1
+              4 data member changes (3 filtered):
+                'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
+                type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
+                  in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
+                    type size changed from 0x40 to 0x48 (in bytes)
+                    1 data member insertion:
+                      'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bytes) at cean_util.h:59:1
+                    7 data member changes:
+                      'void* CeanReadRanges::ptr' offset changed from 0 to 0x8 (in bytes) (by +0x8 bytes)
+                      'int64_t CeanReadRanges::current_number' offset changed from 0x8 to 0x10 (in bytes) (by +0x8 bytes)
+                      'int64_t CeanReadRanges::range_max_number' offset changed from 0x10 to 0x18 (in bytes) (by +0x8 bytes)
+                      'int64_t CeanReadRanges::range_size' offset changed from 0x18 to 0x20 (in bytes) (by +0x8 bytes)
+                      'int CeanReadRanges::last_noncont_ind' offset changed from 0x20 to 0x28 (in bytes) (by +0x8 bytes)
+                      'int64_t CeanReadRanges::init_offset' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
+                      'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
+                and offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
+                'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 0x38 to 0x40 (in bytes) (by +0x8 bytes)
+                'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 0x40 to 0x48 (in bytes) (by +0x8 bytes)
+          'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 0xf8 to 0x100 (in bytes) (by +0x8 bytes)
+          'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 0x100 to 0x108 (in bytes) (by +0x8 bytes)
+          'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 0x108 to 0x110 (in bytes) (by +0x8 bytes)
+          'bool OffloadDescriptor::m_need_runfunction' offset changed from 0x110 to 0x118 (in bytes) (by +0x8 bytes)
+
   [C] 'method void OffloadDescriptor::report_coi_error(error_types, COIRESULT)' at offload_host.h:206:1 has some indirect sub-type changes:
     parameter 1 of type 'typedef error_types' changed:
       underlying type 'enum __anonymous_enum__' at liboffload_error_codes.h:38:1 changed:
@@ -1294,20 +1412,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__::c_report_myorelease' from value '122' to '126' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_coipipe_max_number' from value '123' to '133' at liboffload_error_codes.h:38:1
 
-  [C] 'method bool OffloadDescriptor::setup_descriptors(VarDesc*, VarDesc2*, int, int, void*)' at offload_host.h:157:1 has some indirect sub-type changes:
-    parameter 1 of type 'VarDesc*' has sub-type changes:
-      in pointed to type 'struct VarDesc' at offload_common.h:254:1:
-        type size hasn't changed
-        1 data member change:
-          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;}
-              to:
-                struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
-
   [C] 'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' at offload_myo_host.cpp:691:1 has some indirect sub-type changes:
     parameter 1 of type 'InitTableEntry*' changed:
       in pointed to type 'struct InitTableEntry' at offload_table.h:296:1:
@@ -1320,111 +1424,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                 parameter 1 of type 'typedef MyoArena' was added
             and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' at offload_table.h:295:1
 
-  [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' at compiler_if_host.cpp:456:1 has some indirect sub-type changes:
-    parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
-      underlying type 'OffloadDescriptor*' changed:
-        in pointed to type 'struct OffloadDescriptor' at offload_host.h:68:1:
-          type size changed from 0x118 to 0x128 (in bytes)
-          9 data member insertions:
-            'bool OffloadDescriptor::m_wait_all_devices', at offset 0x28 (in bytes) at offload_host.h:288:1
-            'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 0xe4 (in bytes) at offload_host.h:326:1
-            'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 0xf4 (in bytes) at offload_host.h:329:1
-            '_Offload_stream OffloadDescriptor::m_stream', at offset 0xf8 (in bytes) at offload_host.h:332:1
-            'bool OffloadDescriptor::m_initial_need_runfunction', at offset 0x119 (in bytes) at offload_host.h:347:1
-            'bool OffloadDescriptor::m_out_with_preallocated', at offset 0x11a (in bytes) at offload_host.h:352:1
-            'bool OffloadDescriptor::m_preallocated_alloc', at offset 0x11b (in bytes) at offload_host.h:357:1
-            'bool OffloadDescriptor::m_traceback_called', at offset 0x11c (in bytes) at offload_host.h:360:1
-            'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 0x120 (in bytes) at offload_host.h:362:1
-          8 data member changes (2 filtered):
-            type of 'Engine& OffloadDescriptor::m_device' changed:
-              in referenced type 'struct Engine' at offload_engine.h:395:1:
-                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
-                  'mutex_t Engine::m_stream_lock', at offset 0x1b0 (in bytes) at offload_engine.h:638:1
-                  'int Engine::m_num_cores', at offset 0x1d8 (in bytes) at offload_engine.h:639:1
-                  'int Engine::m_num_threads', at offset 0x1dc (in bytes) at offload_engine.h:640:1
-                  'std::bitset<1024ul> Engine::m_cpus', at offset 0x1e0 (in bytes) at offload_engine.h:641:1
-                  'DynLibList Engine::m_dyn_libs', at offset 0x260 (in bytes) at offload_engine.h:644:1
-                4 data member changes:
-                  type of 'Engine::PtrSet Engine::m_ptr_set' changed:
-                    entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable' at offload_engine.h:163:1
-                      type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
-                      type size changed from 0x30 to 0x58 (in bytes)
-                      1 data member insertion:
-                        'mutex_t PtrDataTable::m_ptr_lock', at offset 0x30 (in bytes) at offload_engine.h:204:1
-                      1 data member change:
-                        type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
-                          typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet at offload_engine.h:165:1
-                          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>'
-                                      type size changed from 0x1 to 0x30 (in bytes)
-                                      1 base class deletion:
-                                        struct std::binary_function<PtrData, PtrData, bool> at stl_function.h:118:1
-                                      1 base class insertion:
-                                        class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
-                                      3 data member insertions:
-                                        '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', at offset 0 (in bytes) at stl_tree.h:592:1
-                                        '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
-                                    and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' at stl_tree.h:633:1
-                              and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' at stl_set.h:116:1
-                        and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list' at offload_engine.h:203:1
-                  'Engine::SignalMap Engine::m_signal_map' offset changed from 0xd0 to 0x128 (in bytes) (by +0x58 bytes)
-                  'mutex_t Engine::m_signal_lock' offset changed from 0x100 to 0x158 (in bytes) (by +0x58 bytes)
-                  type of 'coifunction* Engine::m_funcs[6]' changed:
-                    type name changed from 'coifunction*[6]' to 'coifunction*[7]'
-                    array type size changed from 0x180 to 0x1c0
-                    array type subrange 1 changed length from 6 to 7
-                  and offset changed from 0x128 to 0x278 (in bytes) (by +0x150 bytes)
-            'bool OffloadDescriptor::m_is_mandatory' offset changed from 0x28 to 0x29 (in bytes) (by +0x1 bytes)
-            'const bool OffloadDescriptor::m_is_openmp' offset changed from 0x29 to 0x2a (in bytes) (by +0x1 bytes)
-            type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
-              in pointed to type 'struct OffloadDescriptor::VarExtra' at offload_host.h:216:1:
-                type size changed from 0x48 to 0x50 (in bytes)
-                2 data member insertions:
-                  'void* OffloadDescriptor::VarExtra::alloc', at offset 0x28 (in bytes) at offload_host.h:222:1
-                  'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 0x4c (in bytes) at offload_host.h:227:1
-                4 data member changes (3 filtered):
-                  'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
-                  type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
-                    in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
-                      type size changed from 0x40 to 0x48 (in bytes)
-                      1 data member insertion:
-                        'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bytes) at cean_util.h:59:1
-                      7 data member changes:
-                        'void* CeanReadRanges::ptr' offset changed from 0 to 0x8 (in bytes) (by +0x8 bytes)
-                        'int64_t CeanReadRanges::current_number' offset changed from 0x8 to 0x10 (in bytes) (by +0x8 bytes)
-                        'int64_t CeanReadRanges::range_max_number' offset changed from 0x10 to 0x18 (in bytes) (by +0x8 bytes)
-                        'int64_t CeanReadRanges::range_size' offset changed from 0x18 to 0x20 (in bytes) (by +0x8 bytes)
-                        'int CeanReadRanges::last_noncont_ind' offset changed from 0x20 to 0x28 (in bytes) (by +0x8 bytes)
-                        'int64_t CeanReadRanges::init_offset' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
-                        'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
-                  and offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
-                  'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 0x38 to 0x40 (in bytes) (by +0x8 bytes)
-                  'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 0x40 to 0x48 (in bytes) (by +0x8 bytes)
-            'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 0xf8 to 0x100 (in bytes) (by +0x8 bytes)
-            'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 0x100 to 0x108 (in bytes) (by +0x8 bytes)
-            'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 0x108 to 0x110 (in bytes) (by +0x8 bytes)
-            'bool OffloadDescriptor::m_need_runfunction' offset changed from 0x110 to 0x118 (in bytes) (by +0x8 bytes)
-
   [C] 'function void __offload_register_image(void*)' at offload_host.cpp:5531:1 has some indirect sub-type changes:
     return type changed:
       type name changed from 'void' to 'bool'
diff --git a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt
index 28feddf..135d1df 100644
--- a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt
+++ b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 2 Changed (63 filtered out), 13 Added functions
+Functions changes summary: 0 Removed, 10 Changed (174 filtered out), 13 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
 Variable symbols changes summary: 0 Removed, 6 Added variable symbols not referenced by debug info
@@ -25,7 +25,7 @@  Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
   [A] 'function std::unexpected_handler std::get_unexpected()'
   [A] 'method std::regex_error::regex_error(std::regex_constants::error_type)'
 
-2 functions with some indirect sub-type change:
+10 functions with some indirect sub-type change:
 
   [C] 'function __cxxabiv1::__cxa_dependent_exception* __cxxabiv1::__cxa_allocate_dependent_exception()' has some indirect sub-type changes:
     return type changed:
@@ -41,12 +41,135 @@  Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
           '__cxxabiv1::__cxa_exception* __cxxabiv1::__cxa_dependent_exception::nextPropagatingException' offset changed from 160 to 192 (in bits) (by +32 bits)
           'int __cxxabiv1::__cxa_dependent_exception::propagationCount' offset changed from 192 to 224 (in bits) (by +32 bits)
 
+  [C] 'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes:
+      in pointed to type 'class std::__future_base::_Async_state_common':
+        type size hasn't changed
+        1 base class change:
+          'class std::__future_base::_State_base' changed:
+            type size hasn't changed
+            1 member function changes (3 filtered):
+              'method virtual std::__future_base::_State_base* std::__future_base::_State_base::_M_run_deferred()' has some sub-type changes:
+                return type changed:
+                  entity changed from 'std::__future_base::_State_base*' to 'void'
+                  type size changed from 32 to 0 (in bits)
+            1 data member change:
+              type of 'std::__future_base::_State_base::_Ptr_type std::__future_base::_State_base::_M_result' changed:
+                underlying type 'typedef std::__future_base::_Ptr' changed:
+                  underlying type 'class std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>' changed:
+                    type name changed from 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>' to 'std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>'
+                    type size hasn't changed
+                    1 data member change:
+                      type of 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::__tuple_type std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::_M_t' changed:
+                        typedef name changed from std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::__tuple_type to std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::__tuple_type
+                        underlying type 'class std::tuple<std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter>' changed:
+                          type name changed from 'std::tuple<std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter>' to 'std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>'
+                          type size hasn't changed
+                          1 base class deletion:
+                            struct std::_Tuple_impl<0u, std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter>
+                          1 base class insertion:
+                            struct std::_Tuple_impl<0u, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>
+                      and name of 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::_M_t' changed to 'std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::_M_t'
+        1 member function changes (3 filtered):
+          'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes:
+              pointed to type 'class std::__future_base::_Async_state_common' changed, as being reported
+
+  [C] 'method virtual std::__future_base::_State_base::~_State_base(int)' has some indirect sub-type changes:
+    linkage names of method virtual std::__future_base::_State_base::~_State_base(int)
+    changed from '_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15' to '_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15'
+    implicit parameter 0 of type 'std::__future_base::_State_base*' has sub-type changes:
+      pointed to type 'class std::__future_base::_State_base' changed, as reported earlier
+
   [C] 'function void std::__throw_regex_error(std::regex_constants::error_type)' has some indirect sub-type changes:
     parameter 1 of type 'enum std::regex_constants::error_type' has sub-type changes:
       type size hasn't changed
       1 enumerator deletion:
         'std::regex_constants::error_type::_S_error_last' value '13'
 
+  [C] 'method void std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_allocate_internal_buffer()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >':
+        type size hasn't changed
+        1 member function changes (13 filtered):
+          'method virtual std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        1 data member change:
+          type of 'const std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type* std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_codecvt' changed:
+            in pointed to type 'const std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type':
+              in unqualified underlying type 'typedef std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type':
+                underlying type 'class std::codecvt<wchar_t, char, __mbstate_t>' changed:
+                  type size hasn't changed
+                  no base class change (1 filtered);
+                  2 member function insertions:
+                    'method virtual std::codecvt_base::result std::codecvt<wchar_t, char, __mbstate_t>::do_out(std::codecvt<wchar_t, char, __mbstate_t>::state_type&, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*&, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*&) const', virtual at voffset 2/8
+                    'method virtual std::codecvt_base::result std::codecvt<wchar_t, char, __mbstate_t>::do_in(std::codecvt<wchar_t, char, __mbstate_t>::state_type&, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*&, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*&) const', virtual at voffset 4/8
+                  no member function changes (10 filtered);
+
+  [C] 'method std::basic_fstream<wchar_t, std::char_traits<wchar_t> >* std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::basic_fstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_fstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_fstream<wchar_t, std::char_traits<wchar_t> >':
+        type size hasn't changed
+        1 member function changes (3 filtered):
+          'method virtual std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::~basic_fstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_fstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_fstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >* std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::basic_ifstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >':
+        type size hasn't changed
+        3 member function changes (1 filtered):
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >* std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::basic_ofstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >':
+        type size hasn't changed
+        1 member function changes (3 filtered):
+          'method virtual std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::~basic_ofstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::codecvt_byname<wchar_t, char, __mbstate_t>* std::codecvt_byname<wchar_t, char, __mbstate_t>::codecvt_byname(const char*, std::size_t)' has some indirect sub-type changes:
+    Please note that the symbol of this function is _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+     and it aliases symbol: _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+    implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+      in pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>':
+        type size hasn't changed
+        1 base class change:
+          'class std::codecvt<wchar_t, char, __mbstate_t>' changed:
+            details were reported earlier
+        2 member function changes (1 filtered):
+          'method virtual std::codecvt_byname<wchar_t, char, __mbstate_t>::~codecvt_byname(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+              pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>' changed, as being reported
+          'method virtual std::codecvt_byname<wchar_t, char, __mbstate_t>::~codecvt_byname(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+              pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>' changed, as being reported
+
+  [C] 'method virtual std::regex_error::~regex_error(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::regex_error*' has sub-type changes:
+      in pointed to type 'class std::regex_error':
+        type size hasn't changed
+        1 member function changes (2 filtered):
+          'method virtual std::regex_error::~regex_error(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::regex_error*' has sub-type changes:
+              pointed to type 'class std::regex_error' changed, as being reported
+        no data member change (1 filtered);
+
 6 Added variable symbols not referenced by debug info:
 
   [A] _ZTISt16bad_array_length@@CXXABI_1.3.8
diff --git a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt
index ec25bf6..d128d69 100644
--- a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt
+++ b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 2 Changed (63 filtered out), 13 Added functions
+Functions changes summary: 0 Removed, 10 Changed (174 filtered out), 13 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
 Variable symbols changes summary: 0 Removed, 6 Added variable symbols not referenced by debug info
@@ -25,7 +25,7 @@  Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
   [A] 'function std::unexpected_handler std::get_unexpected()'
   [A] 'method std::regex_error::regex_error(std::regex_constants::error_type)'
 
-2 functions with some indirect sub-type change:
+10 functions with some indirect sub-type change:
 
   [C] 'function __cxxabiv1::__cxa_dependent_exception* __cxxabiv1::__cxa_allocate_dependent_exception()' at eh_alloc.cc:158:1 has some indirect sub-type changes:
     return type changed:
@@ -41,12 +41,135 @@  Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
           '__cxxabiv1::__cxa_exception* __cxxabiv1::__cxa_dependent_exception::nextPropagatingException' offset changed from 160 to 192 (in bits) (by +32 bits)
           'int __cxxabiv1::__cxa_dependent_exception::propagationCount' offset changed from 192 to 224 (in bits) (by +32 bits)
 
+  [C] 'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' at compatibility-thread-c++0x.cc:117:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes:
+      in pointed to type 'class std::__future_base::_Async_state_common' at compatibility-thread-c++0x.cc:106:1:
+        type size hasn't changed
+        1 base class change:
+          'class std::__future_base::_State_base' at future:306:1 changed:
+            type size hasn't changed
+            1 member function changes (3 filtered):
+              'method virtual std::__future_base::_State_base* std::__future_base::_State_base::_M_run_deferred()' has some sub-type changes:
+                return type changed:
+                  entity changed from 'std::__future_base::_State_base*' to 'void'
+                  type size changed from 32 to 0 (in bits)
+            1 data member change:
+              type of 'std::__future_base::_State_base::_Ptr_type std::__future_base::_State_base::_M_result' changed:
+                underlying type 'typedef std::__future_base::_Ptr' at future:253:1 changed:
+                  underlying type 'class std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>' at unique_ptr.h:109:1 changed:
+                    type name changed from 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>' to 'std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>'
+                    type size hasn't changed
+                    1 data member change:
+                      type of 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::__tuple_type std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::_M_t' changed:
+                        typedef name changed from std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::__tuple_type to std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::__tuple_type at unique_ptr.h:146:1
+                        underlying type 'class std::tuple<std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter>' at tuple:521:1 changed:
+                          type name changed from 'std::tuple<std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter>' to 'std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>'
+                          type size hasn't changed
+                          1 base class deletion:
+                            struct std::_Tuple_impl<0u, std::__future_base::_Result<void>*, std::__future_base::_Result_base::_Deleter> at tuple:229:1
+                          1 base class insertion:
+                            struct std::_Tuple_impl<0u, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter> at tuple:231:1
+                      and name of 'std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>::_M_t' changed to 'std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::_M_t' at unique_ptr.h:147:1
+        1 member function changes (3 filtered):
+          'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes:
+              pointed to type 'class std::__future_base::_Async_state_common' changed, as being reported
+
+  [C] 'method virtual std::__future_base::_State_base::~_State_base(int)' at compatibility-thread-c++0x.cc:103:1 has some indirect sub-type changes:
+    linkage names of method virtual std::__future_base::_State_base::~_State_base(int)
+    changed from '_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15' to '_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15'
+    implicit parameter 0 of type 'std::__future_base::_State_base*' has sub-type changes:
+      pointed to type 'class std::__future_base::_State_base' changed at future:306:1, as reported earlier
+
   [C] 'function void std::__throw_regex_error(std::regex_constants::error_type)' at functexcept.cc:139:1 has some indirect sub-type changes:
     parameter 1 of type 'enum std::regex_constants::error_type' has sub-type changes:
       type size hasn't changed
       1 enumerator deletion:
         'std::regex_constants::error_type::_S_error_last' value '13'
 
+  [C] 'method void std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_allocate_internal_buffer()' at fstream.tcc:47:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >' at fstream:72:1:
+        type size hasn't changed
+        1 member function changes (13 filtered):
+          'method virtual std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        1 data member change:
+          type of 'const std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type* std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_codecvt' changed:
+            in pointed to type 'const std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type':
+              in unqualified underlying type 'typedef std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::__codecvt_type' at fstream:86:1:
+                underlying type 'class std::codecvt<wchar_t, char, __mbstate_t>' at codecvt.h:398:1 changed:
+                  type size hasn't changed
+                  no base class change (1 filtered);
+                  2 member function insertions:
+                    'method virtual std::codecvt_base::result std::codecvt<wchar_t, char, __mbstate_t>::do_out(std::codecvt<wchar_t, char, __mbstate_t>::state_type&, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::intern_type*&, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, std::codecvt<wchar_t, char, __mbstate_t>::extern_type*&) const' at codecvt_members.cc:43:1, virtual at voffset 2/8
+                    'method virtual std::codecvt_base::result std::codecvt<wchar_t, char, __mbstate_t>::do_in(std::codecvt<wchar_t, char, __mbstate_t>::state_type&, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*, const std::codecvt<wchar_t, char, __mbstate_t>::extern_type*&, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*, std::codecvt<wchar_t, char, __mbstate_t>::intern_type*&) const' at codecvt_members.cc:118:1, virtual at voffset 4/8
+                  no member function changes (10 filtered);
+
+  [C] 'method std::basic_fstream<wchar_t, std::char_traits<wchar_t> >* std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::basic_fstream(int, void**, const char*, std::ios_base::openmode)' at fstream:819:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_fstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_fstream<wchar_t, std::char_traits<wchar_t> >' at fstream:779:1:
+        type size hasn't changed
+        1 member function changes (3 filtered):
+          'method virtual std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::~basic_fstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_fstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_fstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >* std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::basic_ifstream(int, void**, const char*, std::ios_base::openmode)' at fstream:470:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' at fstream:430:1:
+        type size hasn't changed
+        3 member function changes (1 filtered):
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+          'method virtual std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::~basic_ifstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >* std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::basic_ofstream(int, void**, const char*, std::ios_base::openmode)' at fstream:643:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+      in pointed to type 'class std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >' at fstream:602:1:
+        type size hasn't changed
+        1 member function changes (3 filtered):
+          'method virtual std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >::~basic_ofstream(int, void**)' has some sub-type changes:
+            implicit parameter 0 of type 'std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >*' has sub-type changes:
+              pointed to type 'class std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >' changed, as being reported
+        no data member change (1 filtered);
+
+  [C] 'method std::codecvt_byname<wchar_t, char, __mbstate_t>* std::codecvt_byname<wchar_t, char, __mbstate_t>::codecvt_byname(const char*, std::size_t)' at codecvt.h:462:1 has some indirect sub-type changes:
+    Please note that the symbol of this function is _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+     and it aliases symbol: _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+    implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+      in pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>' at codecvt.h:458:1:
+        type size hasn't changed
+        1 base class change:
+          'class std::codecvt<wchar_t, char, __mbstate_t>' at codecvt.h:398:1 changed:
+            details were reported earlier
+        2 member function changes (1 filtered):
+          'method virtual std::codecvt_byname<wchar_t, char, __mbstate_t>::~codecvt_byname(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+              pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>' changed, as being reported
+          'method virtual std::codecvt_byname<wchar_t, char, __mbstate_t>::~codecvt_byname(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::codecvt_byname<wchar_t, char, __mbstate_t>*' has sub-type changes:
+              pointed to type 'class std::codecvt_byname<wchar_t, char, __mbstate_t>' changed, as being reported
+
+  [C] 'method virtual std::regex_error::~regex_error(int)' at regex.cc:36:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::regex_error*' has sub-type changes:
+      in pointed to type 'class std::regex_error' at regex_error.h:135:1:
+        type size hasn't changed
+        1 member function changes (2 filtered):
+          'method virtual std::regex_error::~regex_error(int)' has some sub-type changes:
+            implicit parameter 0 of type 'std::regex_error*' has sub-type changes:
+              pointed to type 'class std::regex_error' changed, as being reported
+        no data member change (1 filtered);
+
 6 Added variable symbols not referenced by debug info:
 
   [A] _ZTISt16bad_array_length@@CXXABI_1.3.8
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 f7280b4..64f7639 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
@@ -1,4 +1,4 @@ 
-Functions changes summary: 82 Removed, 6 Changed (14 filtered out), 0 Added (1081 filtered out) functions
+Functions changes summary: 82 Removed, 6 Changed (31 filtered out), 0 Added (1081 filtered out) functions
 Variables changes summary: 47 Removed, 1 Changed, 0 Added (11 filtered out) variables
 Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -90,6 +90,124 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
 
 6 functions with some indirect sub-type change:
 
+  [C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'Engine*' has sub-type changes:
+      in pointed to type 'struct Engine':
+        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)
+          'mutex_t Engine::m_stream_lock', at offset 3456 (in bits)
+          'int Engine::m_num_cores', at offset 3776 (in bits)
+          'int Engine::m_num_threads', at offset 3808 (in bits)
+          'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits)
+          'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits)
+        4 data member changes:
+          type of 'Engine::PtrSet Engine::m_ptr_set' changed:
+            entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable'
+              type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
+              type size changed from 384 to 704 (in bits)
+              1 data member insertion:
+                'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits)
+              1 data member change:
+                type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
+                  typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet
+                  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>'
+                              type size changed from 8 to 384 (in bits)
+                              1 base class deletion:
+                                struct std::binary_function<PtrData, PtrData, bool>
+                              1 base class insertion:
+                                class std::allocator<std::_Rb_tree_node<PtrData> >
+                              3 data member insertions:
+                                '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', at offset 0 (in bits)
+                                '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)
+                            and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl'
+                      and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t'
+                and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list'
+          'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
+          'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
+          type of 'coifunction* Engine::m_funcs[6]' changed:
+            type name changed from 'coifunction*[6]' to 'coifunction*[7]'
+            array type size changed from 384 to 448
+            array type subrange 1 changed length from 6 to 7
+          and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
+
+  [C] 'method void OffloadDescriptor::cleanup()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'OffloadDescriptor*' has sub-type changes:
+      in pointed to type 'struct OffloadDescriptor':
+        type size changed from 2240 to 2368 (in bits)
+        9 data member insertions:
+          'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits)
+          'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits)
+          'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits)
+          '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits)
+          'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits)
+          'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits)
+          'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits)
+          'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits)
+          'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits)
+        8 data member changes (2 filtered):
+          'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
+          'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
+          type of 'VarDesc* OffloadDescriptor::m_vars' changed:
+            in pointed to type 'struct VarDesc':
+              type size hasn't changed
+              1 data member change:
+                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;}
+                    to:
+                      struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
+          type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
+            in pointed to type 'struct OffloadDescriptor::VarExtra':
+              type size changed from 576 to 640 (in bits)
+              2 data member insertions:
+                'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits)
+                'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits)
+              4 data member changes (3 filtered):
+                'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
+                type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
+                  in pointed to type 'struct CeanReadRanges':
+                    type size changed from 512 to 576 (in bits)
+                    1 data member insertion:
+                      'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits)
+                    7 data member changes:
+                      'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
+                      'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
+                      'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
+                      'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
+                and offset changed from 384 to 448 (in bits) (by +64 bits)
+                'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
+                'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
+          'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
+          'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
+          'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
+
   [C] 'method void OffloadDescriptor::report_coi_error(error_types, COIRESULT)' has some indirect sub-type changes:
     parameter 1 of type 'typedef error_types' changed:
       underlying type 'enum __anonymous_enum__' changed:
@@ -210,20 +328,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__::c_report_myorelease' from value '122' to '126'
           '__anonymous_enum__::c_coipipe_max_number' from value '123' to '133'
 
-  [C] 'method bool OffloadDescriptor::setup_descriptors(VarDesc*, VarDesc2*, int, int, void*)' has some indirect sub-type changes:
-    parameter 1 of type 'VarDesc*' has sub-type changes:
-      in pointed to type 'struct VarDesc':
-        type size hasn't changed
-        1 data member change:
-          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;}
-              to:
-                struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}
-
   [C] 'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' has some indirect sub-type changes:
     parameter 1 of type 'InitTableEntry*' changed:
       in pointed to type 'struct InitTableEntry':
@@ -236,111 +340,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                 parameter 1 of type 'typedef MyoArena' was added
             and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func'
 
-  [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' has some indirect sub-type changes:
-    parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
-      underlying type 'OffloadDescriptor*' changed:
-        in pointed to type 'struct OffloadDescriptor':
-          type size changed from 2240 to 2368 (in bits)
-          9 data member insertions:
-            'bool OffloadDescriptor::m_wait_all_devices', at offset 320 (in bits)
-            'uint32_t OffloadDescriptor::m_in_deps_allocated', at offset 1824 (in bits)
-            'uint32_t OffloadDescriptor::m_out_deps_allocated', at offset 1952 (in bits)
-            '_Offload_stream OffloadDescriptor::m_stream', at offset 1984 (in bits)
-            'bool OffloadDescriptor::m_initial_need_runfunction', at offset 2248 (in bits)
-            'bool OffloadDescriptor::m_out_with_preallocated', at offset 2256 (in bits)
-            'bool OffloadDescriptor::m_preallocated_alloc', at offset 2264 (in bits)
-            'bool OffloadDescriptor::m_traceback_called', at offset 2272 (in bits)
-            'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::m_omp_async_last_event_type', at offset 2304 (in bits)
-          8 data member changes (2 filtered):
-            type of 'Engine& OffloadDescriptor::m_device' changed:
-              in referenced type 'struct Engine':
-                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)
-                  'mutex_t Engine::m_stream_lock', at offset 3456 (in bits)
-                  'int Engine::m_num_cores', at offset 3776 (in bits)
-                  'int Engine::m_num_threads', at offset 3808 (in bits)
-                  'std::bitset<1024ul> Engine::m_cpus', at offset 3840 (in bits)
-                  'DynLibList Engine::m_dyn_libs', at offset 4864 (in bits)
-                4 data member changes:
-                  type of 'Engine::PtrSet Engine::m_ptr_set' changed:
-                    entity changed from 'typedef Engine::PtrSet' to compatible type 'class PtrDataTable'
-                      type name changed from 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >' to 'PtrDataTable'
-                      type size changed from 384 to 704 (in bits)
-                      1 data member insertion:
-                        'mutex_t PtrDataTable::m_ptr_lock', at offset 384 (in bits)
-                      1 data member change:
-                        type of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed:
-                          typedef name changed from std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type to PtrDataTable::PtrSet
-                          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>'
-                                      type size changed from 8 to 384 (in bits)
-                                      1 base class deletion:
-                                        struct std::binary_function<PtrData, PtrData, bool>
-                                      1 base class insertion:
-                                        class std::allocator<std::_Rb_tree_node<PtrData> >
-                                      3 data member insertions:
-                                        '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', at offset 0 (in bits)
-                                        '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)
-                                    and name of '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 to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl'
-                              and name of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t'
-                        and name of 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_M_t' changed to 'PtrDataTable::list'
-                  'Engine::SignalMap Engine::m_signal_map' offset changed from 1664 to 2368 (in bits) (by +704 bits)
-                  'mutex_t Engine::m_signal_lock' offset changed from 2048 to 2752 (in bits) (by +704 bits)
-                  type of 'coifunction* Engine::m_funcs[6]' changed:
-                    type name changed from 'coifunction*[6]' to 'coifunction*[7]'
-                    array type size changed from 384 to 448
-                    array type subrange 1 changed length from 6 to 7
-                  and offset changed from 2368 to 5056 (in bits) (by +2688 bits)
-            'bool OffloadDescriptor::m_is_mandatory' offset changed from 320 to 328 (in bits) (by +8 bits)
-            'const bool OffloadDescriptor::m_is_openmp' offset changed from 328 to 336 (in bits) (by +8 bits)
-            type of 'OffloadDescriptor::VarExtra* OffloadDescriptor::m_vars_extra' changed:
-              in pointed to type 'struct OffloadDescriptor::VarExtra':
-                type size changed from 576 to 640 (in bits)
-                2 data member insertions:
-                  'void* OffloadDescriptor::VarExtra::alloc', at offset 320 (in bits)
-                  'OffloadDescriptor::OmpAsyncLastEventType OffloadDescriptor::VarExtra::omp_last_event_type', at offset 608 (in bits)
-                4 data member changes (3 filtered):
-                  'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits)
-                  type of 'CeanReadRanges* OffloadDescriptor::VarExtra::read_rng_dst' changed:
-                    in pointed to type 'struct CeanReadRanges':
-                      type size changed from 512 to 576 (in bits)
-                      1 data member insertion:
-                        'Arr_Desc* CeanReadRanges::arr_desc', at offset 0 (in bits)
-                      7 data member changes:
-                        'void* CeanReadRanges::ptr' offset changed from 0 to 64 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::current_number' offset changed from 64 to 128 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_max_number' offset changed from 128 to 192 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::range_size' offset changed from 192 to 256 (in bits) (by +64 bits)
-                        'int CeanReadRanges::last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
-                        'int64_t CeanReadRanges::init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
-                        'CeanReadDim CeanReadRanges::Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
-                  and offset changed from 384 to 448 (in bits) (by +64 bits)
-                  'int64_t OffloadDescriptor::VarExtra::ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
-                  'bool OffloadDescriptor::VarExtra::is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
-            'OffloadHostTimerData* OffloadDescriptor::m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_in_datalen' offset changed from 2048 to 2112 (in bits) (by +64 bits)
-            'uint64_t OffloadDescriptor::m_out_datalen' offset changed from 2112 to 2176 (in bits) (by +64 bits)
-            'bool OffloadDescriptor::m_need_runfunction' offset changed from 2176 to 2240 (in bits) (by +64 bits)
-
   [C] 'function void __offload_register_image(void*)' has some indirect sub-type changes:
     return type changed:
       type name changed from 'void' to 'bool'
diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt
index 0ffaa85..9e12abd 100644
--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt
+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 82 Removed, 6 Changed (14 filtered out), 0 Added (1081 filtered out) functions
+Functions changes summary: 82 Removed, 6 Changed (31 filtered out), 0 Added (1081 filtered out) functions
 Variables changes summary: 0 Removed (47 filtered out), 1 Changed, 0 Added (11 filtered out) variables
 Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
diff --git a/tests/data/test-diff-filter/test4-report.txt b/tests/data/test-diff-filter/test4-report.txt
index 97239c7..31e12bb 100644
--- a/tests/data/test-diff-filter/test4-report.txt
+++ b/tests/data/test-diff-filter/test4-report.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
+Functions changes summary: 0 Removed, 0 Changed (4 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-filter/test41-report-0.txt b/tests/data/test-diff-filter/test41-report-0.txt
index da9a820..94242f7 100644
--- a/tests/data/test-diff-filter/test41-report-0.txt
+++ b/tests/data/test-diff-filter/test41-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 8 Removed, 2 Changed (10 filtered out), 16 Added functions
+Functions changes summary: 8 Removed, 6 Changed (7 filtered out), 16 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 Function symbols changes summary: 1 Removed, 0 Added function symbol not referenced by debug info
 Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -34,7 +34,50 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
     note that this adds a new entry to the vtable of class std::tr1::_Sp_counted_base<__gnu_cxx::_Lock_policy::_S_atomic>
   [A] 'function void std::tr1::__enable_shared_from_this_helper<__gnu_cxx::_Lock_policy::_S_atomic>(const std::tr1::__shared_count<__gnu_cxx::_Lock_policy::_S_atomic>&, ...)'    {_ZNSt3tr132__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEEvRKNS_14__shared_countIXT_EEEz}
 
-2 functions with some indirect sub-type change:
+6 functions with some indirect sub-type change:
+
+  [C] 'method abigail::interned_string abigail::xml_writer::write_context::get_id_for_type(abigail::ir::type_base*) const' at abg-writer.cc:247:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'const abigail::xml_writer::write_context*' has sub-type changes:
+      in pointed to type 'const abigail::xml_writer::write_context':
+        in unqualified underlying type 'class abigail::xml_writer::write_context' at abg-writer.cc:155:1:
+          type size hasn't changed
+          8 data member changes (2 filtered):
+            'std::ostream& abigail::xml_writer::write_context::m_ostream' has *some* difference - please report as a bug
+            'abigail::xml_writer::type_ptr_map abigail::xml_writer::write_context::m_type_id_map' has *some* difference - please report as a bug
+            type of 'abigail::xml_writer::type_ptr_map abigail::xml_writer::write_context::m_emitted_decl_only_map' changed:
+              underlying type 'class std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' at unordered_map.h:180:1 changed:
+                type name changed from 'std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' to 'std::tr1::unordered_map<abigail::ir::type_base *, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base *const, abigail::interned_string> > >'
+                type size hasn't changed
+                1 base class deletion:
+                  class std::tr1::__unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> >, false> at unordered_map.h:43:1
+                1 base class insertion:
+                  class std::tr1::__unordered_map<abigail::ir::type_base *, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base *const, abigail::interned_string> >, false> at unordered_map.h:43:1
+            'abigail::xml_writer::type_ptr_map abigail::xml_writer::write_context::m_referenced_types_map' has *some* difference - please report as a bug
+            type of 'abigail::xml_writer::fn_tmpl_shared_ptr_map abigail::xml_writer::write_context::m_fn_tmpl_id_map' changed:
+              underlying type 'class std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::function_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::function_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >' at unordered_map.h:180:1 changed:
+                type name changed from 'std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::function_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::function_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >' to 'std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char>, abigail::ir::function_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::function_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char> > > >'
+                type size hasn't changed
+                1 base class deletion:
+                  class std::tr1::__unordered_map<std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::function_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::function_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, false> at unordered_map.h:43:1
+                1 base class insertion:
+                  class std::tr1::__unordered_map<std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char>, abigail::ir::function_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::function_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::function_tdecl>, std::__cxx11::basic_string<char> > >, false> at unordered_map.h:43:1
+            type of 'abigail::xml_writer::class_tmpl_shared_ptr_map abigail::xml_writer::write_context::m_class_tmpl_id_map' changed:
+              underlying type 'class std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::class_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::class_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >' at unordered_map.h:180:1 changed:
+                type name changed from 'std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::class_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::class_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >' to 'std::tr1::unordered_map<std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char>, abigail::ir::class_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::class_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char> > > >'
+                type size hasn't changed
+                1 base class deletion:
+                  class std::tr1::__unordered_map<std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, abigail::ir::class_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::class_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, false> at unordered_map.h:43:1
+                1 base class insertion:
+                  class std::tr1::__unordered_map<std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char>, abigail::ir::class_tdecl::shared_ptr_hash, std::equal_to<std::tr1::shared_ptr<abigail::ir::class_tdecl> >, std::allocator<std::pair<const std::tr1::shared_ptr<abigail::ir::class_tdecl>, std::__cxx11::basic_string<char> > >, false> at unordered_map.h:43:1
+            type of 'abigail::ir::string_elf_symbol_sptr_map_type abigail::xml_writer::write_context::m_fun_symbol_map' changed:
+              underlying type 'class std::tr1::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol>, std::tr1::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol> > > >' at unordered_map.h:180:1 changed:
+                type name changed from 'std::tr1::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol>, std::tr1::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol> > > >' to 'std::tr1::unordered_map<std::__cxx11::basic_string<char>, std::tr1::shared_ptr<abigail::ir::elf_symbol>, std::tr1::hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::tr1::shared_ptr<abigail::ir::elf_symbol> > > >'
+                type size hasn't changed
+                1 base class deletion:
+                  class std::tr1::__unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol>, std::tr1::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tr1::shared_ptr<abigail::ir::elf_symbol> > >, false> at unordered_map.h:43:1
+                1 base class insertion:
+                  class std::tr1::__unordered_map<std::__cxx11::basic_string<char>, std::tr1::shared_ptr<abigail::ir::elf_symbol>, std::tr1::hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::tr1::shared_ptr<abigail::ir::elf_symbol> > >, false> at unordered_map.h:43:1
+            'abigail::ir::string_elf_symbol_sptr_map_type abigail::xml_writer::write_context::m_var_symbol_map' has *some* difference - please report as a bug
 
   [C] 'method void abigail::xml_writer::write_context::record_type_as_emitted(const abigail::ir::type_base_sptr&)' at abg-writer.cc:473:1 has some indirect sub-type changes:
     parameter 1 of type 'const abigail::ir::type_base_sptr&' has sub-type changes:
@@ -48,6 +91,84 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
               class std::tr1::__shared_ptr<abigail::ir::type_base, __gnu_cxx::_Lock_policy::_S_atomic> at shared_ptr.h:539:1
 
   [C] 'method bool abigail::xml_writer::write_context::type_ptr_cmp::operator()(const abigail::ir::type_base*, const abigail::ir::type_base*) const' at abg-writer.cc:359:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'const abigail::xml_writer::write_context::type_ptr_cmp*' has sub-type changes:
+      in pointed to type 'const abigail::xml_writer::write_context::type_ptr_cmp':
+        in unqualified underlying type 'struct abigail::xml_writer::write_context::type_ptr_cmp' at abg-writer.cc:337:1:
+          type size hasn't changed
+          1 data member change:
+            'abigail::xml_writer::type_ptr_map* abigail::xml_writer::write_context::type_ptr_cmp::map' has *some* difference - please report as a bug
+
+  [C] 'method void std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_initialize_map(std::size_t)' at stl_deque.h:625:1 has some indirect sub-type changes:
+    'method void std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_initialize_map(std::size_t) {_ZNSt11_Deque_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_initialize_mapEm}' now becomes 'method void std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_M_initialize_map(std::size_t) {_ZNSt11_Deque_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_initialize_mapEm}'
+    implicit parameter 0 of type 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*' changed:
+      in pointed to type 'class std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' at stl_deque.h:458:1:
+        type name changed from 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >'
+        type size hasn't changed
+        1 data member change:
+          type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_impl' changed:
+            type name changed from 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl' to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl'
+            type size hasn't changed
+            1 base class deletion:
+              class std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > at allocator.h:108:1
+            1 base class insertion:
+              class std::allocator<std::__cxx11::basic_string<char> > at allocator.h:108:1
+            3 data member changes (1 filtered):
+              name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_map' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_map' at stl_deque.h:550:1
+              name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_start' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_start' at stl_deque.h:552:1
+              type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_finish' changed:
+                typedef name changed from std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator to std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::iterator at stl_deque.h:485:1
+                underlying type 'struct std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' at stl_deque.h:106:1 changed:
+                  type name changed from 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>'
+                  type size hasn't changed
+                  1 data member changes (3 filtered):
+                    type of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_node' changed:
+                      typedef name changed from std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer to std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_Map_pointer at stl_deque.h:112:1
+                      underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' at stl_deque.h:116:1 changed:
+                        entity changed from 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' to compatible type 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >**'
+                          in pointed to type 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >':
+                            entity changed from 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >' to 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*'
+                            type size changed from 256 to 64 (in bits)
+                    and name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_node' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_node' at stl_deque.h:140:1
+              and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_finish' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_finish' at stl_deque.h:553:1
+          and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_impl' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_M_impl' at stl_deque.h:631:1
+
+  [C] 'method void std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_M_initialize_map(std::size_t)' at stl_deque.h:625:1 has some indirect sub-type changes:
+    implicit parameter 0 of type 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >*' has sub-type changes:
+      in pointed to type 'class std::_Deque_base<unsigned int, std::allocator<unsigned int> >' at stl_deque.h:458:1:
+        type size hasn't changed
+        1 data member change:
+          type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_M_impl' changed:
+            type size hasn't changed
+            3 data member changes:
+              'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Map_pointer std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl::_M_map' has *some* difference - please report as a bug
+              'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::iterator std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl::_M_start' has *some* difference - please report as a bug
+              type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::iterator std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl::_M_finish' changed:
+                underlying type 'struct std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' at stl_deque.h:106:1 changed:
+                  type name changed from 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>'
+                  type size hasn't changed
+                  1 data member changes (3 filtered):
+                    type of 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_M_node' changed:
+                      typedef name changed from std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer to std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_Map_pointer at stl_deque.h:112:1
+                      underlying type 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' at stl_deque.h:116:1 changed:
+                        entity changed from 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' to compatible type 'unsigned int**'
+                          in pointed to type 'unsigned int':
+                            entity changed from 'unsigned int' to 'unsigned int*'
+                            type size changed from 32 to 64 (in bits)
+                    and name of 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_M_node' changed to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_M_node' at stl_deque.h:140:1
+
+  [C] 'method std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~deque(int)' at stl_deque.h:1040:1 has some indirect sub-type changes:
+    linkage names of method std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~deque(int)
+    changed from '_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev, _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev' to '_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev'
+    'method std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~deque(int) {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev, _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev}' now becomes 'method std::deque<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::~deque() {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev}'
+    implicit parameter 0 of type 'std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*' changed:
+      in pointed to type 'class std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' at stl_deque.h:829:1:
+        type name changed from 'std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' to 'std::deque<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >'
+        type size hasn't changed
+        1 base class deletion:
+          class std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > at stl_deque.h:458:1
+        1 base class insertion:
+          class std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > > at stl_deque.h:458:1
+    parameter 1 of type 'int' was removed
 
 1 Removed function symbol not referenced by debug info:
 
diff --git a/tests/data/test-diff-filter/test9-report.txt b/tests/data/test-diff-filter/test9-report.txt
index 867b83a..0ba712e 100644
--- a/tests/data/test-diff-filter/test9-report.txt
+++ b/tests/data/test-diff-filter/test9-report.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 2 Added functions
+Functions changes summary: 0 Removed, 1 Changed (1 filtered out), 2 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 2 Added functions:
@@ -8,9 +8,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
+  [C] 'method int S::mem_fn0()' has some indirect sub-type changes:
+    implicit parameter 0 of type 'S*' has sub-type changes:
+      in pointed to type 'struct S':
         type size changed from 8 to 32 (in bits)
         1 data member insertion:
           'int S::m0', at offset 0 (in bits)
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 2a679d6..5bc57e8 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
@@ -1,5 +1,5 @@ 
 ================ changes of 'libsigc-2.0.so.0.0.0'===============
-  Functions changes summary: 1 Removed, 2 Changed (17 filtered out), 1 Added functions
+  Functions changes summary: 1 Removed, 2 Changed (58 filtered out), 1 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   1 Removed function:
@@ -12,57 +12,56 @@ 
 
   2 functions with some indirect sub-type change:
 
-    [C] 'method sigc::connection::connection(const sigc::connection&)' has some indirect sub-type changes:
-      parameter 1 of type 'const sigc::connection&' has sub-type changes:
-        in referenced type 'const sigc::connection':
-          in unqualified underlying type 'struct sigc::connection':
-            type size hasn't changed
-            1 data member change:
-              type of 'sigc::slot_base* sigc::connection::slot_' changed:
-                in pointed to type 'class sigc::slot_base':
-                  type size hasn't changed
-                  1 data member change:
-                    type of 'sigc::slot_base::rep_type* sigc::slot_base::rep_' changed:
-                      in pointed to type 'typedef sigc::slot_base::rep_type':
-                        underlying type 'struct sigc::internal::slot_rep' changed:
-                          type size hasn't changed
-                          1 base class change:
-                            'struct sigc::trackable' changed:
-                              type size hasn't changed
-                              1 data member change:
-                                type of 'sigc::internal::trackable_callback_list* sigc::trackable::callback_list_' changed:
-                                  in pointed to type 'struct sigc::internal::trackable_callback_list':
-                                    type size changed from 192 to 256 (in bits)
-                                    2 data member changes:
-                                      type of 'sigc::internal::trackable_callback_list::callback_list sigc::internal::trackable_callback_list::callbacks_' changed:
-                                        underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                          type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                          type size changed from 128 to 192 (in bits)
-                                          1 base class change:
-                                            'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                              type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                              type size changed from 128 to 192 (in bits)
-                                              1 data member change:
-                                                type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed:
-                                                  type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
-                                                  type size changed from 128 to 192 (in bits)
-                                                  1 data member change:
-                                                    type of 'std::__detail::_List_node_base std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed:
-                                                      type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
-                                                      type size changed from 128 to 192 (in bits)
-                                                      1 base class insertion:
-                                                        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'
-                                                and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
-                                      'bool sigc::internal::trackable_callback_list::clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
+    [C] 'method bool sigc::connection::block(bool)' has some indirect sub-type changes:
+      implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
+        in pointed to type 'struct sigc::connection':
+          type size hasn't changed
+          1 data member change:
+            type of 'sigc::slot_base* sigc::connection::slot_' changed:
+              in pointed to type 'class sigc::slot_base':
+                type size hasn't changed
+                1 data member change:
+                  type of 'sigc::slot_base::rep_type* sigc::slot_base::rep_' changed:
+                    in pointed to type 'typedef sigc::slot_base::rep_type':
+                      underlying type 'struct sigc::internal::slot_rep' changed:
+                        type size hasn't changed
+                        1 base class change:
+                          'struct sigc::trackable' changed:
+                            type size hasn't changed
+                            1 data member change:
+                              type of 'sigc::internal::trackable_callback_list* sigc::trackable::callback_list_' changed:
+                                in pointed to type 'struct sigc::internal::trackable_callback_list':
+                                  type size changed from 192 to 256 (in bits)
+                                  2 data member changes:
+                                    type of 'sigc::internal::trackable_callback_list::callback_list sigc::internal::trackable_callback_list::callbacks_' changed:
+                                      underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
+                                        type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
+                                        type size changed from 128 to 192 (in bits)
+                                        1 base class change:
+                                          'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
+                                            type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
+                                            type size changed from 128 to 192 (in bits)
+                                            1 data member change:
+                                              type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed:
+                                                type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
+                                                type size changed from 128 to 192 (in bits)
+                                                1 data member change:
+                                                  type of 'std::__detail::_List_node_base std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed:
+                                                    type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
+                                                    type size changed from 128 to 192 (in bits)
+                                                    1 base class insertion:
+                                                      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'
+                                              and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
+                                    'bool sigc::internal::trackable_callback_list::clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
 
-    [C] 'method sigc::internal::signal_impl* sigc::signal_base::impl() const' has some indirect sub-type changes:
-      return type changed:
+    [C] 'method void sigc::internal::signal_impl::block(bool)' has some indirect sub-type changes:
+      implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
         in pointed to type 'struct sigc::internal::signal_impl':
           type size changed from 192 to 256 (in bits)
           1 data member change:
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 ba49f8a..63d1fa5 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
@@ -1,5 +1,5 @@ 
 ================ changes of 'libtbb.so.2'===============
-  Functions changes summary: 0 Removed, 8 Changed (16 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 13 Changed (94 filtered out), 17 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
   Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info
@@ -24,32 +24,191 @@ 
     [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)'    {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_}
     [A] 'method void tbb::task_group_context::capture_fp_settings()'    {_ZN3tbb18task_group_context19capture_fp_settingsEv}
 
-  8 functions with some indirect sub-type change:
-
-    [C] 'method void tbb::internal::concurrent_queue_base_v3::assign(const tbb::internal::concurrent_queue_base&)' at concurrent_queue.cpp:570:1 has some indirect sub-type changes:
-      parameter 1 of type 'const tbb::internal::concurrent_queue_base&' has sub-type changes:
-        in referenced type 'const tbb::internal::concurrent_queue_base':
-          in unqualified underlying type 'typedef tbb::internal::concurrent_queue_base' at concurrent_queue.cpp:57:1:
-            underlying type 'class tbb::internal::concurrent_queue_base_v3' at _concurrent_queue_impl.h:816:1 changed:
-              type size hasn't changed
-              1 data member change:
-                type of 'tbb::internal::concurrent_queue_rep* tbb::internal::concurrent_queue_base_v3::my_rep' changed:
-                  in pointed to type 'class tbb::internal::concurrent_queue_rep' at concurrent_queue_v2.cpp:102:1:
+  13 functions with some indirect sub-type change:
+
+    [C] 'method void tbb::filter::set_end_of_input()' at pipeline.cpp:700:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::filter*' has sub-type changes:
+        in pointed to type 'class tbb::filter' at pipeline.h:65:1:
+          type size hasn't changed
+          1 member function deletion:
+            'method virtual tbb::filter::~filter(int)' at pipeline.cpp:698:1
+          1 member function insertion:
+            'method virtual tbb::filter::~filter(int)' at pipeline.cpp:688:1
+          no member function changes (4 filtered);
+          1 data member changes (4 filtered):
+            type of 'tbb::internal::input_buffer* tbb::filter::my_input_buffer' changed:
+              in pointed to type 'class tbb::internal::input_buffer' at pipeline.cpp:52:1:
+                type size hasn't changed
+                1 data member change:
+                  type of 'tbb::spin_mutex tbb::internal::input_buffer::array_mutex' changed:
                     type size hasn't changed
-                    2 data member changes (1 filtered):
-                      type of 'tbb::internal::concurrent_monitor tbb::internal::concurrent_queue_rep::items_avail' changed:
-                        type size hasn't changed
-                        1 data member change:
-                          'tbb::spin_mutex tbb::internal::concurrent_monitor::mutex_ec' offset changed from 0 to 8 (in bits) (by +8 bits)
-                      type of 'tbb::internal::micro_queue tbb::internal::concurrent_queue_rep::array[8]' changed:
-                        array element type 'struct tbb::internal::micro_queue' changed:
-                          type size hasn't changed
-                          1 data member change:
-                            type of 'tbb::spin_mutex tbb::internal::micro_queue::page_mutex' changed:
-                              type size hasn't changed
-                              1 base class insertion:
-                                class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-                        type size hasn't changed
+                    1 base class insertion:
+                      class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
+
+    [C] 'method tbb::task& tbb::internal::allocate_root_with_context_proxy::allocate(std::size_t) const' at task.h:135:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'const tbb::internal::allocate_root_with_context_proxy*' has sub-type changes:
+        in pointed to type 'const tbb::internal::allocate_root_with_context_proxy':
+          in unqualified underlying type 'class tbb::internal::allocate_root_with_context_proxy' at task.h:131:1:
+            type size hasn't changed
+            1 data member change:
+              type of 'tbb::task_group_context& tbb::internal::allocate_root_with_context_proxy::my_context' changed:
+                in referenced type 'class tbb::task_group_context' at task.h:302:1:
+                  type size hasn't changed
+                  1 data member insertion:
+                    'tbb::internal::cpu_ctl_env_space tbb::task_group_context::my_cpu_ctl_env', at offset 896 (in bits) at task.h:380:1
+                  2 data member changes (1 filtered):
+                    type of 'char tbb::task_group_context::_leading_padding[80]' changed:
+                      type name changed from 'char[80]' to 'char[72]'
+                      array type size changed from 640 to 576
+                      array type subrange 1 changed length from 80 to 72
+                    type of 'tbb::internal::generic_scheduler* tbb::task_group_context::my_owner' changed:
+                      in pointed to type 'class tbb::internal::generic_scheduler' at scheduler.h:110:1:
+                        type size changed from 3136 to 3072 (in bits)
+                        1 base class change:
+                          'struct tbb::internal::scheduler_state' at scheduler.h:73:1 changed:
+                            type size changed from 576 to 704 (in bits)
+                            2 data member insertions:
+                              'volatile intptr_t* tbb::internal::scheduler_state::my_ref_top_priority', at offset 576 (in bits) at scheduler.h:96:1
+                              'volatile uintptr_t* tbb::internal::scheduler_state::my_ref_reload_epoch', at offset 640 (in bits) at scheduler.h:99:1
+                            2 data member changes (1 filtered):
+                              type of 'tbb::internal::arena* tbb::internal::scheduler_state::my_arena' changed:
+                                in pointed to type 'class tbb::internal::arena' at arena.h:160:1:
+                                  type size hasn't changed
+                                  1 base class deletion:
+                                    struct tbb::internal::padded<tbb::internal::arena_base> at tbb_stddef.h:261:1
+                                  1 base class insertion:
+                                    struct tbb::internal::padded<tbb::internal::arena_base, 128ul> at tbb_stddef.h:251:1
+                                  1 data member change:
+                                    type of 'tbb::internal::arena_slot tbb::internal::arena::my_slots[1]' changed:
+                                      array element type 'struct tbb::internal::arena_slot' changed:
+                                        type size hasn't changed
+                                        2 base class deletions:
+                                          struct tbb::internal::padded<tbb::internal::arena_slot_line1> at tbb_stddef.h:261:1
+                                          struct tbb::internal::padded<tbb::internal::arena_slot_line2> at tbb_stddef.h:261:1
+                                        2 base class insertions:
+                                          struct tbb::internal::padded<tbb::internal::arena_slot_line1, 128ul> at tbb_stddef.h:251:1
+                                          struct tbb::internal::padded<tbb::internal::arena_slot_line2, 128ul> at tbb_stddef.h:251:1
+                                      type size hasn't changed
+                              type of 'tbb::internal::mail_inbox tbb::internal::scheduler_state::my_inbox' changed:
+                                type size hasn't changed
+                                1 data member change:
+                                  type of 'tbb::internal::mail_outbox* tbb::internal::mail_inbox::my_putter' changed:
+                                    in pointed to type 'class tbb::internal::mail_outbox' at mailbox.h:103:1:
+                                      type size hasn't changed
+                                      1 base class deletion:
+                                        class tbb::internal::unpadded_mail_outbox at mailbox.h:97:1
+                                      1 base class insertion:
+                                        struct tbb::internal::padded<tbb::internal::unpadded_mail_outbox, 128ul> at tbb_stddef.h:251:1
+                                      1 data member deletion:
+                                        'char tbb::internal::mail_outbox::pad[104]', at offset 136 (in bits) at mailbox.h:114:1
+                        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
+                        1 member function insertion:
+                          'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&)' at scheduler.h:362:1, virtual at voffset 7/7
+                        1 member function changes (3 filtered):
+                          'method virtual void tbb::internal::generic_scheduler::spawn(tbb::task&, tbb::task*&)' has some sub-type changes:
+                            implicit parameter 0 of type 'tbb::internal::generic_scheduler*' has sub-type changes:
+                              pointed to type 'class tbb::internal::generic_scheduler' changed, as being reported
+                        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:
+                            in pointed to type 'class tbb::internal::market' at market.h:49:1:
+                              type size changed from 1664 to 1728 (in bits)
+                              1 member function changes (7 filtered):
+                                'method virtual rml::job* tbb::internal::market::create_one_job()' has some sub-type changes:
+                                  implicit parameter 0 of type 'tbb::internal::market*' has sub-type changes:
+                                    pointed to type 'class tbb::internal::market' changed, as being reported
+                              1 data member insertion:
+                                'bool tbb::internal::market::join_workers', at offset 384 (in bits) at market.h:88:1
+                              7 data member changes:
+                                type of 'tbb::internal::market::arenas_list_mutex_type tbb::internal::market::my_arenas_list_mutex' changed:
+                                  underlying type 'typedef tbb::internal::scheduler_mutex_type' at scheduler_common.h:123:1 changed:
+                                    typedef name changed from tbb::internal::scheduler_mutex_type to tbb::spin_rw_mutex at spin_rw_mutex.h:38:1
+                                    underlying type 'class tbb::spin_mutex' at spin_mutex.h:47:1 changed:
+                                      type name changed from 'tbb::spin_mutex' to 'tbb::spin_rw_mutex_v3'
+                                      type size changed from 8 to 64 (in bits)
+                                      1 base class insertion:
+                                        class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
+                                      1 data member change:
+                                        type of '__TBB_atomic_flag tbb::spin_mutex::flag' changed:
+                                          typedef name changed from __TBB_atomic_flag to tbb::spin_rw_mutex_v3::state_t at spin_rw_mutex.h:214:1
+                                          underlying type 'typedef __TBB_Flag' at tbb_machine.h:875:1 changed:
+                                            typedef name changed from __TBB_Flag to intptr_t at stdint.h:119:1
+                                            underlying type 'unsigned char' changed:
+                                              type name changed from 'unsigned char' to 'long int'
+                                              type size changed from 8 to 64 (in bits)
+                                        and name of 'tbb::spin_mutex::flag' changed to 'tbb::spin_rw_mutex_v3::state' at spin_rw_mutex.h:224:1
+                                'intptr_t tbb::internal::market::my_global_top_priority' offset changed from 384 to 448 (in bits) (by +64 bits)
+                                'intptr_t tbb::internal::market::my_global_bottom_priority' offset changed from 448 to 512 (in bits) (by +64 bits)
+                                'uintptr_t tbb::internal::market::my_global_reload_epoch' offset changed from 512 to 576 (in bits) (by +64 bits)
+                                type of 'tbb::internal::market::priority_level_info tbb::internal::market::my_priority_levels[3]' changed:
+                                  array element type 'struct tbb::internal::market::priority_level_info' changed:
+                                    type size hasn't changed
+                                    1 data member change:
+                                      type of 'tbb::internal::intrusive_list_base<tbb::internal::intrusive_list<tbb::internal::arena>, tbb::internal::arena>::iterator tbb::internal::market::priority_level_info::next_arena' changed:
+                                        entity changed from 'class tbb::internal::intrusive_list_base<tbb::internal::intrusive_list<tbb::internal::arena>, tbb::internal::arena>::iterator' to 'tbb::internal::arena*'
+                                        type size hasn't changed
+                                  type size hasn't changed
+                                and offset changed from 576 to 640 (in bits) (by +64 bits)
+                                'uintptr_t tbb::internal::market::my_arenas_aba_epoch' offset changed from 1536 to 1600 (in bits) (by +64 bits)
+                                'tbb::internal::generic_scheduler* tbb::internal::market::my_workers[1]' offset changed from 1600 to 1664 (in bits) (by +64 bits)
+                          and offset changed from 768 to 896 (in bits) (by +128 bits)
+                          'tbb::internal::FastRandom tbb::internal::generic_scheduler::my_random' offset changed from 832 to 960 (in bits) (by +128 bits)
+                          'tbb::task* tbb::internal::generic_scheduler::my_free_list' offset changed from 960 to 1024 (in bits) (by +64 bits)
+                          'tbb::task* tbb::internal::generic_scheduler::my_dummy_task' offset changed from 1024 to 1088 (in bits) (by +64 bits)
+                          'long int tbb::internal::generic_scheduler::my_ref_count' offset changed from 1088 to 1152 (in bits) (by +64 bits)
+                          'bool tbb::internal::generic_scheduler::my_auto_initialized' offset changed from 1152 to 1216 (in bits) (by +64 bits)
+                          'intptr_t tbb::internal::generic_scheduler::my_small_task_count' offset changed from 1216 to 1280 (in bits) (by +64 bits)
+                          'tbb::task* tbb::internal::generic_scheduler::my_return_list' offset changed from 1280 to 1344 (in bits) (by +64 bits)
+                          'char tbb::internal::generic_scheduler::_padding1[112]' offset changed from 1344 to 1408 (in bits) (by +64 bits)
+                          'tbb::internal::context_list_node_t tbb::internal::generic_scheduler::my_context_list_head' offset changed from 2240 to 2304 (in bits) (by +64 bits)
+                          'tbb::spin_mutex tbb::internal::generic_scheduler::my_context_list_mutex' offset changed from 2368 to 2432 (in bits) (by +64 bits)
+                          'uintptr_t tbb::internal::generic_scheduler::my_context_state_propagation_epoch' offset changed from 2432 to 2496 (in bits) (by +64 bits)
+                          'tbb::atomic<long unsigned int> tbb::internal::generic_scheduler::my_local_ctx_list_update' offset changed from 2496 to 2560 (in bits) (by +64 bits)
+                          'uintptr_t tbb::internal::generic_scheduler::my_local_reload_epoch' offset changed from 2816 to 2752 (in bits) (by -64 bits)
+                          'volatile bool tbb::internal::generic_scheduler::my_pool_reshuffling_pending' offset changed from 2880 to 2816 (in bits) (by -64 bits)
+                          'tbb::atomic<long unsigned int> tbb::internal::generic_scheduler::my_nonlocal_ctx_list_update' offset changed from 2944 to 2880 (in bits) (by -64 bits)
+                          '__cilk_tbb_unwatch_thunk tbb::internal::generic_scheduler::my_cilk_unwatch_thunk' offset changed from 3008 to 2944 (in bits) (by -64 bits)
+
+    [C] 'method tbb::internal::concurrent_queue_base::concurrent_queue_base(std::size_t)' at concurrent_queue_v2.cpp:200:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::internal::concurrent_queue_base*' has sub-type changes:
+        in pointed to type 'class tbb::internal::concurrent_queue_base' at concurrent_queue_v2.h:41:1:
+          type size hasn't changed
+          1 member function deletion:
+            'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' at concurrent_queue_v2.cpp:225:1
+          1 member function insertion:
+            'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' at concurrent_queue_v2.cpp:217:1
+          1 member function changes (3 filtered):
+            'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' has some sub-type changes:
+              implicit parameter 0 of type 'tbb::internal::concurrent_queue_base*' has sub-type changes:
+                pointed to type 'class tbb::internal::concurrent_queue_base' changed, as being reported
+          1 data member change:
+            type of 'tbb::internal::concurrent_queue_rep* tbb::internal::concurrent_queue_base::my_rep' changed:
+              in pointed to type 'class tbb::internal::concurrent_queue_rep' at concurrent_queue_v2.cpp:102:1:
+                type size hasn't changed
+                1 data member changes (2 filtered):
+                  type of 'tbb::internal::concurrent_monitor tbb::internal::concurrent_queue_rep::items_avail' changed:
+                    type size hasn't changed
+                    1 data member change:
+                      'tbb::spin_mutex tbb::internal::concurrent_monitor::mutex_ec' offset changed from 0 to 8 (in bits) (by +8 bits)
+
+    [C] 'method bool tbb::internal::hash_map_segment_base::internal_grow_predicate() const' at concurrent_hash_map.cpp:44:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'const tbb::internal::hash_map_segment_base*' has sub-type changes:
+        in pointed to type 'const tbb::internal::hash_map_segment_base':
+          in unqualified underlying type 'struct tbb::internal::hash_map_segment_base' at concurrent_hash_map.cpp:27:1:
+            type size hasn't changed
+            1 data member change:
+              type of 'tbb::internal::hash_map_segment_base::segment_mutex_t tbb::internal::hash_map_segment_base::my_mutex' changed:
+                underlying type 'typedef tbb::spin_rw_mutex' at spin_rw_mutex.h:39:1 changed:
+                  underlying type 'class tbb::spin_rw_mutex_v3' at spin_rw_mutex.h:43:1 changed:
+                    type size hasn't changed
+                    1 base class insertion:
+                      class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
+                    no data member change (1 filtered);
 
     [C] 'function void tbb::internal::throw_exception_v4(tbb::internal::exception_id)' at tbb_misc.cpp:119:1 has some indirect sub-type changes:
       parameter 1 of type 'enum tbb::internal::exception_id' has sub-type changes:
@@ -59,154 +218,54 @@ 
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
-    [C] 'method void tbb::mutex::scoped_lock::internal_acquire(tbb::mutex&)' at mutex.h:129:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::mutex&' has sub-type changes:
-        in referenced type 'class tbb::mutex' at mutex.h:40:1:
+    [C] 'method void tbb::mutex::internal_construct()' at mutex.h:218:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::mutex*' has sub-type changes:
+        in pointed to type 'class tbb::mutex' at mutex.h:40:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::pipeline::run(std::size_t, tbb::task_group_context&)' at pipeline.cpp:633:1 has some indirect sub-type changes:
-      parameter 2 of type 'tbb::task_group_context&' has sub-type changes:
-        in referenced type 'class tbb::task_group_context' at task.h:302:1:
-          type size hasn't changed
-          1 data member insertion:
-            'tbb::internal::cpu_ctl_env_space tbb::task_group_context::my_cpu_ctl_env', at offset 896 (in bits) at task.h:380:1
-          2 data member changes (1 filtered):
-            type of 'char tbb::task_group_context::_leading_padding[80]' changed:
-              type name changed from 'char[80]' to 'char[72]'
-              array type size changed from 640 to 576
-              array type subrange 1 changed length from 80 to 72
-            type of 'tbb::internal::generic_scheduler* tbb::task_group_context::my_owner' changed:
-              in pointed to type 'class tbb::internal::generic_scheduler' at scheduler.h:110:1:
-                type size changed from 3136 to 3072 (in bits)
-                1 base class change:
-                  'struct tbb::internal::scheduler_state' at scheduler.h:73:1 changed:
-                    type size changed from 576 to 704 (in bits)
-                    2 data member insertions:
-                      'volatile intptr_t* tbb::internal::scheduler_state::my_ref_top_priority', at offset 576 (in bits) at scheduler.h:96:1
-                      'volatile uintptr_t* tbb::internal::scheduler_state::my_ref_reload_epoch', at offset 640 (in bits) at scheduler.h:99:1
-                    2 data member changes (1 filtered):
-                      type of 'tbb::internal::arena* tbb::internal::scheduler_state::my_arena' changed:
-                        in pointed to type 'class tbb::internal::arena' at arena.h:160:1:
-                          type size hasn't changed
-                          1 base class deletion:
-                            struct tbb::internal::padded<tbb::internal::arena_base> at tbb_stddef.h:261:1
-                          1 base class insertion:
-                            struct tbb::internal::padded<tbb::internal::arena_base, 128ul> at tbb_stddef.h:251:1
-                          1 data member change:
-                            type of 'tbb::internal::arena_slot tbb::internal::arena::my_slots[1]' changed:
-                              array element type 'struct tbb::internal::arena_slot' changed:
-                                type size hasn't changed
-                                2 base class deletions:
-                                  struct tbb::internal::padded<tbb::internal::arena_slot_line1> at tbb_stddef.h:261:1
-                                  struct tbb::internal::padded<tbb::internal::arena_slot_line2> at tbb_stddef.h:261:1
-                                2 base class insertions:
-                                  struct tbb::internal::padded<tbb::internal::arena_slot_line1, 128ul> at tbb_stddef.h:251:1
-                                  struct tbb::internal::padded<tbb::internal::arena_slot_line2, 128ul> at tbb_stddef.h:251:1
-                              type size hasn't changed
-                      type of 'tbb::internal::mail_inbox tbb::internal::scheduler_state::my_inbox' changed:
-                        type size hasn't changed
-                        1 data member change:
-                          type of 'tbb::internal::mail_outbox* tbb::internal::mail_inbox::my_putter' changed:
-                            in pointed to type 'class tbb::internal::mail_outbox' at mailbox.h:103:1:
-                              type size hasn't changed
-                              1 base class deletion:
-                                class tbb::internal::unpadded_mail_outbox at mailbox.h:97:1
-                              1 base class insertion:
-                                struct tbb::internal::padded<tbb::internal::unpadded_mail_outbox, 128ul> at tbb_stddef.h:251:1
-                              1 data member deletion:
-                                'char tbb::internal::mail_outbox::pad[104]', at offset 136 (in bits) at mailbox.h:114:1
-                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
-                1 member function insertion:
-                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&)' at scheduler.h:362:1, virtual at voffset 7/7
-                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:
-                    in pointed to type 'class tbb::internal::market' at market.h:49:1:
-                      type size changed from 1664 to 1728 (in bits)
-                      1 data member insertion:
-                        'bool tbb::internal::market::join_workers', at offset 384 (in bits) at market.h:88:1
-                      7 data member changes:
-                        type of 'tbb::internal::market::arenas_list_mutex_type tbb::internal::market::my_arenas_list_mutex' changed:
-                          underlying type 'typedef tbb::internal::scheduler_mutex_type' at scheduler_common.h:123:1 changed:
-                            typedef name changed from tbb::internal::scheduler_mutex_type to tbb::spin_rw_mutex at spin_rw_mutex.h:38:1
-                            underlying type 'class tbb::spin_mutex' at spin_mutex.h:47:1 changed:
-                              type name changed from 'tbb::spin_mutex' to 'tbb::spin_rw_mutex_v3'
-                              type size changed from 8 to 64 (in bits)
-                              1 base class insertion:
-                                class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-                              1 data member change:
-                                type of '__TBB_atomic_flag tbb::spin_mutex::flag' changed:
-                                  typedef name changed from __TBB_atomic_flag to tbb::spin_rw_mutex_v3::state_t at spin_rw_mutex.h:214:1
-                                  underlying type 'typedef __TBB_Flag' at tbb_machine.h:875:1 changed:
-                                    typedef name changed from __TBB_Flag to intptr_t at stdint.h:119:1
-                                    underlying type 'unsigned char' changed:
-                                      type name changed from 'unsigned char' to 'long int'
-                                      type size changed from 8 to 64 (in bits)
-                                and name of 'tbb::spin_mutex::flag' changed to 'tbb::spin_rw_mutex_v3::state' at spin_rw_mutex.h:224:1
-                        'intptr_t tbb::internal::market::my_global_top_priority' offset changed from 384 to 448 (in bits) (by +64 bits)
-                        'intptr_t tbb::internal::market::my_global_bottom_priority' offset changed from 448 to 512 (in bits) (by +64 bits)
-                        'uintptr_t tbb::internal::market::my_global_reload_epoch' offset changed from 512 to 576 (in bits) (by +64 bits)
-                        type of 'tbb::internal::market::priority_level_info tbb::internal::market::my_priority_levels[3]' changed:
-                          array element type 'struct tbb::internal::market::priority_level_info' changed:
-                            type size hasn't changed
-                            1 data member change:
-                              type of 'tbb::internal::intrusive_list_base<tbb::internal::intrusive_list<tbb::internal::arena>, tbb::internal::arena>::iterator tbb::internal::market::priority_level_info::next_arena' changed:
-                                entity changed from 'class tbb::internal::intrusive_list_base<tbb::internal::intrusive_list<tbb::internal::arena>, tbb::internal::arena>::iterator' to 'tbb::internal::arena*'
-                                type size hasn't changed
-                          type size hasn't changed
-                        and offset changed from 576 to 640 (in bits) (by +64 bits)
-                        'uintptr_t tbb::internal::market::my_arenas_aba_epoch' offset changed from 1536 to 1600 (in bits) (by +64 bits)
-                        'tbb::internal::generic_scheduler* tbb::internal::market::my_workers[1]' offset changed from 1600 to 1664 (in bits) (by +64 bits)
-                  and offset changed from 768 to 896 (in bits) (by +128 bits)
-                  'tbb::internal::FastRandom tbb::internal::generic_scheduler::my_random' offset changed from 832 to 960 (in bits) (by +128 bits)
-                  'tbb::task* tbb::internal::generic_scheduler::my_free_list' offset changed from 960 to 1024 (in bits) (by +64 bits)
-                  'tbb::task* tbb::internal::generic_scheduler::my_dummy_task' offset changed from 1024 to 1088 (in bits) (by +64 bits)
-                  'long int tbb::internal::generic_scheduler::my_ref_count' offset changed from 1088 to 1152 (in bits) (by +64 bits)
-                  'bool tbb::internal::generic_scheduler::my_auto_initialized' offset changed from 1152 to 1216 (in bits) (by +64 bits)
-                  'intptr_t tbb::internal::generic_scheduler::my_small_task_count' offset changed from 1216 to 1280 (in bits) (by +64 bits)
-                  'tbb::task* tbb::internal::generic_scheduler::my_return_list' offset changed from 1280 to 1344 (in bits) (by +64 bits)
-                  'char tbb::internal::generic_scheduler::_padding1[112]' offset changed from 1344 to 1408 (in bits) (by +64 bits)
-                  'tbb::internal::context_list_node_t tbb::internal::generic_scheduler::my_context_list_head' offset changed from 2240 to 2304 (in bits) (by +64 bits)
-                  'tbb::spin_mutex tbb::internal::generic_scheduler::my_context_list_mutex' offset changed from 2368 to 2432 (in bits) (by +64 bits)
-                  'uintptr_t tbb::internal::generic_scheduler::my_context_state_propagation_epoch' offset changed from 2432 to 2496 (in bits) (by +64 bits)
-                  'tbb::atomic<long unsigned int> tbb::internal::generic_scheduler::my_local_ctx_list_update' offset changed from 2496 to 2560 (in bits) (by +64 bits)
-                  'uintptr_t tbb::internal::generic_scheduler::my_local_reload_epoch' offset changed from 2816 to 2752 (in bits) (by -64 bits)
-                  'volatile bool tbb::internal::generic_scheduler::my_pool_reshuffling_pending' offset changed from 2880 to 2816 (in bits) (by -64 bits)
-                  'tbb::atomic<long unsigned int> tbb::internal::generic_scheduler::my_nonlocal_ctx_list_update' offset changed from 2944 to 2880 (in bits) (by -64 bits)
-                  '__cilk_tbb_unwatch_thunk tbb::internal::generic_scheduler::my_cilk_unwatch_thunk' offset changed from 3008 to 2944 (in bits) (by -64 bits)
-
-    [C] 'method void tbb::queuing_mutex::scoped_lock::acquire(tbb::queuing_mutex&)' at queuing_mutex.h:84:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::queuing_mutex&' has sub-type changes:
-        in referenced type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
+    [C] 'method bool tbb::mutex::scoped_lock::internal_try_acquire(tbb::mutex&)' at mutex.h:132:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::mutex&' has sub-type changes:
+        referenced type 'class tbb::mutex' changed at mutex.h:48:1, as reported earlier
+
+    [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.h:106:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::queuing_rw_mutex::scoped_lock::acquire(tbb::queuing_rw_mutex&, bool)' at queuing_rw_mutex.h:95:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::queuing_rw_mutex&' has sub-type changes:
-        in referenced type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
+    [C] 'method void tbb::queuing_rw_mutex::internal_construct()' at queuing_rw_mutex.h:146:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::queuing_rw_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::recursive_mutex::scoped_lock::internal_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:139:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes:
-        in referenced type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
+    [C] 'method void tbb::recursive_mutex::internal_construct()' at recursive_mutex.h:224:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::recursive_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method bool tbb::spin_mutex::scoped_lock::internal_try_acquire(tbb::spin_mutex&)' at spin_mutex.h:69:1 has some indirect sub-type changes:
+    [C] 'method bool tbb::recursive_mutex::scoped_lock::internal_try_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:142:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes:
+        referenced type 'class tbb::recursive_mutex' changed at recursive_mutex.h:47:1, as reported earlier
+
+    [C] 'method void tbb::spin_mutex::scoped_lock::internal_acquire(tbb::spin_mutex&)' at spin_mutex.h:66:1 has some indirect sub-type changes:
       parameter 1 of type 'tbb::spin_mutex&' has sub-type changes:
         referenced type 'class tbb::spin_mutex' changed at spin_mutex.h:47:1, as reported earlier
 
+    [C] 'method tbb::thread_bound_filter::result_type tbb::thread_bound_filter::process_item()' at pipeline.cpp:712:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::thread_bound_filter*' has sub-type changes:
+        in pointed to type 'class tbb::thread_bound_filter' at pipeline.h:197:1:
+          type size hasn't changed
+          1 base class change:
+            'class tbb::filter' at pipeline.h:74:1 changed:
+              details were reported earlier
+
   3 Removed variable symbols not referenced by debug info:
 
     [D] _ZTVN3rml16versioned_objectE
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 bef715b..daf0622 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
@@ -1,5 +1,5 @@ 
 ================ changes of 'libtbb.so.2'===============
-  Functions changes summary: 0 Removed, 7 Changed (17 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 13 Changed (94 filtered out), 17 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
   Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info
@@ -24,7 +24,49 @@ 
     [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)'    {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_}
     [A] 'method void tbb::task_group_context::capture_fp_settings()'    {_ZN3tbb18task_group_context19capture_fp_settingsEv}
 
-  7 functions with some indirect sub-type change:
+  13 functions with some indirect sub-type change:
+
+    [C] 'method void tbb::filter::set_end_of_input()' at pipeline.cpp:700:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::filter*' has sub-type changes:
+        in pointed to type 'class tbb::filter' at pipeline.h:65:1:
+          type size hasn't changed
+          1 member function deletion:
+            'method virtual tbb::filter::~filter(int)' at pipeline.cpp:698:1
+          1 member function insertion:
+            'method virtual tbb::filter::~filter(int)' at pipeline.cpp:688:1
+          no member function changes (4 filtered);
+          no data member changes (5 filtered);
+
+    [C] 'method tbb::task& tbb::internal::allocate_root_with_context_proxy::allocate(std::size_t) const' at task.h:135:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'const tbb::internal::allocate_root_with_context_proxy*' has sub-type changes:
+        in pointed to type 'const tbb::internal::allocate_root_with_context_proxy':
+          in unqualified underlying type 'class tbb::internal::allocate_root_with_context_proxy' at task.h:131:1:
+            type size hasn't changed
+            1 data member change:
+              type of 'tbb::task_group_context& tbb::internal::allocate_root_with_context_proxy::my_context' changed:
+                in referenced type 'class tbb::task_group_context' at task.h:302:1:
+                  type size hasn't changed
+                  1 data member insertion:
+                    'tbb::internal::cpu_ctl_env_space tbb::task_group_context::my_cpu_ctl_env', at offset 896 (in bits) at task.h:380:1
+                  1 data member changes (2 filtered):
+                    type of 'char tbb::task_group_context::_leading_padding[80]' changed:
+                      type name changed from 'char[80]' to 'char[72]'
+                      array type size changed from 640 to 576
+                      array type subrange 1 changed length from 80 to 72
+
+    [C] 'method void tbb::internal::concurrent_queue_base_v3::assign(const tbb::internal::concurrent_queue_base&)' at concurrent_queue.cpp:570:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::internal::concurrent_queue_base_v3*' has sub-type changes:
+        in pointed to type 'class tbb::internal::concurrent_queue_base_v3' at _concurrent_queue_impl.h:834:1:
+          type size hasn't changed
+          1 member function deletion:
+            'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' at concurrent_queue.cpp:361:1
+          1 member function insertion:
+            'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' at concurrent_queue.cpp:370:1
+          1 member function changes (6 filtered):
+            'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' has some sub-type changes:
+              implicit parameter 0 of type 'tbb::internal::concurrent_queue_base_v3*' has sub-type changes:
+                pointed to type 'class tbb::internal::concurrent_queue_base_v3' changed, as being reported
+          no data member change (1 filtered);
 
     [C] 'function void tbb::internal::throw_exception_v4(tbb::internal::exception_id)' at tbb_misc.cpp:119:1 has some indirect sub-type changes:
       parameter 1 of type 'enum tbb::internal::exception_id' has sub-type changes:
@@ -34,53 +76,62 @@ 
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
-    [C] 'method void tbb::mutex::scoped_lock::internal_acquire(tbb::mutex&)' at mutex.h:129:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::mutex&' has sub-type changes:
-        in referenced type 'class tbb::mutex' at mutex.h:40:1:
+    [C] 'method void tbb::mutex::internal_construct()' at mutex.h:218:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::mutex*' has sub-type changes:
+        in pointed to type 'class tbb::mutex' at mutex.h:40:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::pipeline::run(std::size_t, tbb::task_group_context&)' at pipeline.cpp:633:1 has some indirect sub-type changes:
-      parameter 2 of type 'tbb::task_group_context&' has sub-type changes:
-        in referenced type 'class tbb::task_group_context' at task.h:302:1:
-          type size hasn't changed
-          1 data member insertion:
-            'tbb::internal::cpu_ctl_env_space tbb::task_group_context::my_cpu_ctl_env', at offset 896 (in bits) at task.h:380:1
-          1 data member changes (2 filtered):
-            type of 'char tbb::task_group_context::_leading_padding[80]' changed:
-              type name changed from 'char[80]' to 'char[72]'
-              array type size changed from 640 to 576
-              array type subrange 1 changed length from 80 to 72
-
-    [C] 'method void tbb::queuing_mutex::scoped_lock::acquire(tbb::queuing_mutex&)' at queuing_mutex.h:84:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::queuing_mutex&' has sub-type changes:
-        in referenced type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
+    [C] 'method bool tbb::mutex::scoped_lock::internal_try_acquire(tbb::mutex&)' at mutex.h:132:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::mutex&' has sub-type changes:
+        referenced type 'class tbb::mutex' changed at mutex.h:48:1, as reported earlier
+
+    [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.h:106:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::queuing_rw_mutex::scoped_lock::acquire(tbb::queuing_rw_mutex&, bool)' at queuing_rw_mutex.h:95:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::queuing_rw_mutex&' has sub-type changes:
-        in referenced type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
+    [C] 'method void tbb::queuing_rw_mutex::internal_construct()' at queuing_rw_mutex.h:146:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::queuing_rw_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::recursive_mutex::scoped_lock::internal_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:139:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes:
-        in referenced type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
+    [C] 'method void tbb::recursive_mutex::internal_construct()' at recursive_mutex.h:224:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::recursive_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
-    [C] 'method void tbb::spin_mutex::scoped_lock::internal_acquire(tbb::spin_mutex&)' at spin_mutex.h:66:1 has some indirect sub-type changes:
-      parameter 1 of type 'tbb::spin_mutex&' has sub-type changes:
-        in referenced type 'class tbb::spin_mutex' at spin_mutex.h:40:1:
+    [C] 'method bool tbb::recursive_mutex::scoped_lock::internal_try_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:142:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes:
+        referenced type 'class tbb::recursive_mutex' changed at recursive_mutex.h:47:1, as reported earlier
+
+    [C] 'method void tbb::spin_mutex::internal_construct()' at spin_mutex.h:138:1 has some indirect sub-type changes:
+      implicit parameter 0 of type 'tbb::spin_mutex*' has sub-type changes:
+        in pointed to type 'class tbb::spin_mutex' at spin_mutex.h:40:1:
           type size hasn't changed
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
 
+    [C] 'method bool tbb::spin_mutex::scoped_lock::internal_try_acquire(tbb::spin_mutex&)' at spin_mutex.h:69:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::spin_mutex&' has sub-type changes:
+        referenced type 'class tbb::spin_mutex' changed at spin_mutex.h:47:1, as reported earlier
+
+    [C] 'method void tbb::spin_rw_mutex::internal_acquire_reader()' at spin_rw_mutex_v2.h:44:1 has some indirect sub-type changes:
+      parameter 1 of type 'tbb::spin_rw_mutex*' has sub-type changes:
+        in pointed to type 'typedef tbb::spin_rw_mutex' at spin_rw_mutex.h:38:1:
+          underlying type 'class tbb::spin_rw_mutex_v3' at spin_rw_mutex.h:43:1 changed:
+            type size hasn't changed
+            1 base class insertion:
+              class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
+            no data member change (1 filtered);
+
   3 Removed variable symbols not referenced by debug info:
 
     [D] _ZTVN3rml16versioned_objectE
diff --git a/tests/data/test-diff-suppr/test24-soname-report-0.txt b/tests/data/test-diff-suppr/test24-soname-report-0.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-0.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-0.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-1.txt b/tests/data/test-diff-suppr/test24-soname-report-1.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-1.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-1.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-10.txt b/tests/data/test-diff-suppr/test24-soname-report-10.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-10.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-10.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-11.txt b/tests/data/test-diff-suppr/test24-soname-report-11.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-11.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-11.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-12.txt b/tests/data/test-diff-suppr/test24-soname-report-12.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-12.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-12.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-13.txt b/tests/data/test-diff-suppr/test24-soname-report-13.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-13.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-13.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-14.txt b/tests/data/test-diff-suppr/test24-soname-report-14.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-14.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-14.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-15.txt b/tests/data/test-diff-suppr/test24-soname-report-15.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-15.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-15.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-16.txt b/tests/data/test-diff-suppr/test24-soname-report-16.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-16.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-16.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-2.txt b/tests/data/test-diff-suppr/test24-soname-report-2.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-2.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-2.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-3.txt b/tests/data/test-diff-suppr/test24-soname-report-3.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-3.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-3.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-4.txt b/tests/data/test-diff-suppr/test24-soname-report-4.txt
index 8e0c021..19b8801 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-4.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-4.txt
@@ -1,12 +1,13 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void foo(S&)' has some indirect sub-type changes:
-    parameter 1 of type 'S&' has sub-type changes:
-      in referenced type 'struct S':
-        type size changed from 32 to 64 (in bits)
-        1 data member insertion:
-          'char S::m1', at offset 32 (in bits)
+  [C] 'method int S::get() const' has some indirect sub-type changes:
+    implicit parameter 0 of type 'const S*' has sub-type changes:
+      in pointed to type 'const S':
+        in unqualified underlying type 'struct S':
+          type size changed from 32 to 64 (in bits)
+          1 data member insertion:
+            'char S::m1', at offset 32 (in bits)
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-5.txt b/tests/data/test-diff-suppr/test24-soname-report-5.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-5.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-5.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-6.txt b/tests/data/test-diff-suppr/test24-soname-report-6.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-6.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-6.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-7.txt b/tests/data/test-diff-suppr/test24-soname-report-7.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-7.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-7.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-8.txt b/tests/data/test-diff-suppr/test24-soname-report-8.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-8.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-8.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test24-soname-report-9.txt b/tests/data/test-diff-suppr/test24-soname-report-9.txt
index 9666a8f..97239c7 100644
--- a/tests/data/test-diff-suppr/test24-soname-report-9.txt
+++ b/tests/data/test-diff-suppr/test24-soname-report-9.txt
@@ -1,3 +1,3 @@ 
-Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
+Functions changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
diff --git a/tests/data/test-diff-suppr/test31-report-1.txt b/tests/data/test-diff-suppr/test31-report-1.txt
index 43f3610..5e29177 100644
--- a/tests/data/test-diff-suppr/test31-report-1.txt
+++ b/tests/data/test-diff-suppr/test31-report-1.txt
@@ -1,11 +1,11 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (1 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change:
 
-  [C] 'function void hidden::foo(hidden::S0&)' has some indirect sub-type changes:
-    parameter 1 of type 'hidden::S0&' has sub-type changes:
-      in referenced type 'struct hidden::S0':
+  [C] 'method hidden::S0::S0(int)' has some indirect sub-type changes:
+    implicit parameter 0 of type 'hidden::S0*' has sub-type changes:
+      in pointed to type 'struct hidden::S0':
         type size changed from 32 to 64 (in bits)
         1 data member insertion:
           'char hidden::S0::m1', at offset 32 (in bits)
diff --git a/tests/data/test-diff-suppr/test33-report-0.txt b/tests/data/test-diff-suppr/test33-report-0.txt
index 29d6cf5..07f6812 100644
--- a/tests/data/test-diff-suppr/test33-report-0.txt
+++ b/tests/data/test-diff-suppr/test33-report-0.txt
@@ -1,4 +1,4 @@ 
-Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 0 Added functions
 Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 1 function with some indirect sub-type change: