diff --git a/src/abg-comparison-priv.h b/src/abg-comparison-priv.h
index b82b5d07..1e595313 100644
--- a/src/abg-comparison-priv.h
+++ b/src/abg-comparison-priv.h
@@ -191,9 +191,6 @@ struct diff_context::priv
   vector<filtering::filter_base_sptr>	filters_;
   suppressions_type			suppressions_;
   pointer_map				visited_diff_nodes_;
-  // This is the last visited diff node, per class of equivalence.
-  // It's set during the redundant diff node marking process.
-  pointer_map				last_visited_diff_node_;
   corpus_diff_sptr			corpus_diff_;
   ostream*				default_output_stream_;
   ostream*				error_output_stream_;
@@ -506,7 +503,9 @@ struct class_or_union_diff::priv
   string_decl_base_sptr_map dms_replaced_by_adms_;
   mutable changed_var_sptrs_type dms_replaced_by_adms_ordered_;
   string_member_function_sptr_map deleted_member_functions_;
+  class_or_union::member_functions sorted_deleted_member_functions_;
   string_member_function_sptr_map inserted_member_functions_;
+  class_or_union::member_functions sorted_inserted_member_functions_;
   string_function_decl_diff_sptr_map changed_member_functions_;
   function_decl_diff_sptrs_type sorted_changed_member_functions_;
   string_decl_base_sptr_map deleted_member_class_tmpls_;
@@ -1390,9 +1389,14 @@ void
 sort_string_function_ptr_map(const string_function_ptr_map& map,
 			     vector<function_decl*>& sorted);
 
+void
+sort_string_member_function_sptr_map(const string_member_function_sptr_map& map,
+				     class_or_union::member_functions& sorted);
+
 void
 sort_string_type_base_sptr_map(string_type_base_sptr_map& map,
 			       vector<type_base_sptr>& sorted);
+
 void
 sort_string_function_decl_diff_sptr_map
 (const string_function_decl_diff_sptr_map& map,
diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index 07bfe98c..bae9c266 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -201,6 +201,27 @@ sort_string_function_ptr_map(const string_function_ptr_map& map,
   std::sort(sorted.begin(), sorted.end(), comp);
 }
 
+/// Sort a map that's an instance of @ref
+/// string_member_function_sptr_map and fill a vector of member
+/// functions with the sorted result.
+///
+/// @param map the map to sort.
+///
+/// @param sorted the resulting sorted vector.
+void
+sort_string_member_function_sptr_map(const string_member_function_sptr_map& map,
+				     class_or_union::member_functions& sorted)
+{
+  sorted.reserve(map.size());
+  for (string_member_function_sptr_map::const_iterator i = map.begin();
+       i != map.end();
+       ++i)
+    sorted.push_back(i->second);
+
+  function_comp comp;
+  std::sort(sorted.begin(), sorted.end(), comp);
+}
+
 /// Sort the values of a @ref string_function_decl_diff_sptr_map map
 /// and store the result in a vector of @ref function_decl_diff_sptr
 /// objects.
@@ -885,55 +906,6 @@ bool
 is_child_node_of_base_diff(const diff* diff)
 {return diff && is_base_diff(diff->parent_node());}
 
-/// Test if the current diff node has an ancestor node that has been
-/// filtered out.
-///
-/// This function detects cycles when walking through the "parent"
-/// path.
-///
-/// @param diff the diff node to take into account.
-///
-/// @param ancestor this is a hash map of the pointers of the parents
-/// that are visited.  It's used to detect cycles while visiting
-/// parents of this diff tree node.
-///
-/// @return true iff the current diff node has an ancestor node that
-/// has been filtered out.
-static bool
-diff_has_ancestor_filtered_out(const diff* d,
-			       unordered_map<size_t, bool>& ancestors)
-{
-  if (!d || !d->parent_node())
-    return false;
-  if (d->parent_node()->is_filtered_out())
-    return true;
-
-  const diff* parent = d->parent_node();
-  unordered_map<size_t, bool>::const_iterator i =
-    ancestors.find(reinterpret_cast<size_t>(parent));
-  if (i != ancestors.end())
-    // We've just detected a cycle in the path made of the parents
-    // that we are visiting.
-    return false;
-  ancestors[reinterpret_cast<size_t>(parent)] = true;
-
-  return diff_has_ancestor_filtered_out(parent, ancestors);
-}
-
-/// Test if the current diff node has an ancestor node that has been
-/// filtered out.
-///
-/// @param diff the diff node to take into account.
-///
-/// @return true iff the current diff node has an ancestor node that
-/// has been filtered out.
-static bool
-diff_has_ancestor_filtered_out(const diff* diff)
-{
-  unordered_map<size_t, bool> ancestors_trace;
-  return diff_has_ancestor_filtered_out(diff, ancestors_trace);
-}
-
 /// The default traverse function.
 ///
 /// @return true.
@@ -1324,45 +1296,6 @@ void
 diff_context::forget_visited_diffs()
 {priv_->visited_diff_nodes_.clear();}
 
-/// Mark a given diff node as being the last one that has been visited
-/// in its class of equivalence.
-///
-/// @param d the diff node to mark.
-void
-diff_context::mark_last_diff_visited_per_class_of_equivalence(const diff* d)
-{
-  if (!d->get_canonical_diff())
-    return;
-
-  size_t v0 = reinterpret_cast<size_t>(d->get_canonical_diff());
-  size_t v1 = reinterpret_cast<size_t>(d);
-  priv_->last_visited_diff_node_[v0]= v1;
-}
-
-/// Clear the marking about the diff diff nodes in a given class of
-/// equivalence.
-void
-diff_context::clear_last_diffs_visited_per_class_of_equivalence()
-{priv_->last_visited_diff_node_.clear();}
-
-/// Return the last diff node visited in the class of equivalence of
-/// a given diff node.
-///
-/// @param d the diff node which class of equivalence to consider.
-///
-/// @return the last diff node visited in the class of equivalence of
-/// the diff node @p d.
-const diff*
-diff_context::get_last_visited_diff_of_class_of_equivalence(const diff* d)
-{
-  size_t v0 = reinterpret_cast<size_t>(d);
-
-  pointer_map::const_iterator it = priv_->last_visited_diff_node_.find(v0);
-  if (it != priv_->last_visited_diff_node_.end())
-    return reinterpret_cast<const diff*>(it->second);
-  return 0;
-}
-
 /// This sets a flag that, if it's true, then during the traversing of
 /// a diff nodes tree each node is visited at most once.
 ///
@@ -5264,11 +5197,11 @@ class_or_union_diff::chain_into_hierarchy()
     if (diff_sptr d = *i)
       append_child_node(d);
 
-  for (unsigned_var_diff_sptr_map::const_iterator i =
-	 get_priv()->changed_dm_.begin();
-       i != get_priv()->changed_dm_.end();
+  for (var_diff_sptrs_type::const_iterator i =
+	 get_priv()->sorted_changed_dm_.begin();
+       i != get_priv()->sorted_changed_dm_.end();
        ++i)
-    if (diff_sptr d = i->second)
+    if (diff_sptr d = *i)
       append_child_node(d);
 
   // member types changes
@@ -5487,6 +5420,12 @@ class_diff::ensure_lookup_tables_populated(void) const
 	 ++i)
       p->inserted_member_functions_.erase(*i);
 
+    sort_string_member_function_sptr_map(p->deleted_member_functions_,
+					 p->sorted_deleted_member_functions_);
+
+    sort_string_member_function_sptr_map(p->inserted_member_functions_,
+					 p->sorted_inserted_member_functions_);
+
     sort_string_virtual_member_function_diff_sptr_map
       (p->changed_member_functions_,
        p->sorted_changed_member_functions_);
@@ -12155,11 +12094,11 @@ struct redundancy_marking_visitor : public diff_node_visitor
 		&& !is_diff_of_variadic_parameter(d)
 		&& !is_diff_of_variadic_parameter_type(d)
 		// If the canonical diff itself has been filtered out,
-		// then this one is not marked redundant, obviously.
-		&& !d->get_canonical_diff()->is_filtered_out()
-		&& !(diff_has_ancestor_filtered_out
-		     (d->context()->
-		      get_last_visited_diff_of_class_of_equivalence(d)))
+		// then this one is not marked redundant, unless the
+		// canonical diff was already redundant.
+		&& (!d->get_canonical_diff()->is_filtered_out()
+		    || (d->get_canonical_diff()->get_category()
+			& REDUNDANT_CATEGORY))
 		// If the *same* diff node (not one that is merely
 		// equivalent to this one) has already been visited
 		// the do not mark it as beind redundant.  It's only
@@ -12197,8 +12136,6 @@ struct redundancy_marking_visitor : public diff_node_visitor
 	set_visiting_kind(get_visiting_kind() | SKIP_CHILDREN_VISITING_KIND);
 	skip_children_nodes_ = true;
       }
-
-    d->context()->mark_last_diff_visited_per_class_of_equivalence(d);
   }
 
   virtual void
@@ -12259,6 +12196,12 @@ struct redundancy_marking_visitor : public diff_node_visitor
 		if ((*i)->has_changes())
 		  {
 		    has_non_empty_child = true;
+		    // Let's see if the current child node '*i' is
+		    // "non-redundant".
+		    //
+		    // A non-redundant node would be a node that
+		    // carries a change to be reported and has not
+		    // been marked as being redundant.
 		    if ((*i)->to_be_reported()
 			&& ((*i)->get_category() & REDUNDANT_CATEGORY) == 0)
 		      has_non_redundant_child = true;
@@ -12322,12 +12265,10 @@ categorize_redundancy(diff* diff_tree)
   if (diff_tree->context()->show_redundant_changes())
     return;
   redundancy_marking_visitor v;
-  diff_tree->context()->clear_last_diffs_visited_per_class_of_equivalence();
   bool s = diff_tree->context()->visiting_a_node_twice_is_forbidden();
   diff_tree->context()->forbid_visiting_a_node_twice(false);
   diff_tree->traverse(v);
   diff_tree->context()->forbid_visiting_a_node_twice(s);
-  diff_tree->context()->clear_last_diffs_visited_per_class_of_equivalence();
 }
 
 /// Walk a given @ref diff sub-tree to categorize each of the nodes
diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
index f536be06..dc48f4b8 100644
--- a/src/abg-default-reporter.cc
+++ b/src/abg-default-reporter.cc
@@ -934,17 +934,17 @@ default_reporter::report(const class_or_union_diff& d,
       if (numdels)
 	report_mem_header(out, numdels, num_filtered, del_kind,
 			  "member function", indent);
-      for (string_member_function_sptr_map::const_iterator i =
-	     d.get_priv()->deleted_member_functions_.begin();
-	   i != d.get_priv()->deleted_member_functions_.end();
+      for (class_or_union::member_functions::const_iterator i =
+	     d.get_priv()->sorted_deleted_member_functions_.begin();
+	   i != d.get_priv()->sorted_deleted_member_functions_.end();
 	   ++i)
 	{
 	  if (!(ctxt->get_allowed_category()
 		& NON_VIRT_MEM_FUN_CHANGE_CATEGORY)
-	      && !get_member_function_is_virtual(i->second))
+	      && !get_member_function_is_virtual(*i))
 	    continue;
 
-	  method_decl_sptr mem_fun = i->second;
+	  method_decl_sptr mem_fun = *i;
 	  out << indent << "  ";
 	  represent(*ctxt, mem_fun, out);
 	}
@@ -955,17 +955,17 @@ default_reporter::report(const class_or_union_diff& d,
       if (numins)
 	report_mem_header(out, numins, num_filtered, ins_kind,
 			  "member function", indent);
-      for (string_member_function_sptr_map::const_iterator i =
-	     d.get_priv()->inserted_member_functions_.begin();
-	   i != d.get_priv()->inserted_member_functions_.end();
+      for (class_or_union::member_functions::const_iterator i =
+	     d.get_priv()->sorted_inserted_member_functions_.begin();
+	   i != d.get_priv()->sorted_inserted_member_functions_.end();
 	   ++i)
 	{
 	  if (!(ctxt->get_allowed_category()
 		& NON_VIRT_MEM_FUN_CHANGE_CATEGORY)
-	      && !get_member_function_is_virtual(i->second))
+	      && !get_member_function_is_virtual(*i))
 	    continue;
 
-	  method_decl_sptr mem_fun = i->second;
+	  method_decl_sptr mem_fun = *i;
 	  out << indent << "  ";
 	  represent(*ctxt, mem_fun, out);
 	}
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 135d1dfd..7e09ed0d 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, 10 Changed (174 filtered out), 13 Added functions
+Functions changes summary: 0 Removed, 5 Changed (179 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)'
 
-10 functions with some indirect sub-type change:
+5 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:
@@ -70,16 +70,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
                           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
+        no member function changes (4 filtered);
 
   [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:
@@ -91,10 +82,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
     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
+        no member function changes (14 filtered);
         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':
@@ -103,46 +91,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
                   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
+                    '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
                   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
@@ -152,23 +104,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
         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);
+        no member function changes (3 filtered);
 
 6 Added variable symbols not referenced by debug info:
 
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 d128d69a..f5bc3001 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, 10 Changed (174 filtered out), 13 Added functions
+Functions changes summary: 0 Removed, 5 Changed (179 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)'
 
-10 functions with some indirect sub-type change:
+5 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:
@@ -70,16 +70,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
                           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
+        no member function changes (4 filtered);
 
   [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:
@@ -91,10 +82,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
     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
+        no member function changes (14 filtered);
         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':
@@ -103,46 +91,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
                   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
+                    '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
                   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
@@ -152,23 +104,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
         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);
+        no member function changes (3 filtered);
 
 6 Added variable symbols not referenced by debug info:
 
diff --git a/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt b/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
index 61b03335..59202ee4 100644
--- a/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
+++ b/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
@@ -27,53 +27,7 @@
                           2 data member insertions:
                             '_XtransConnFd* _XtransConnInfo::recv_fds', at offset 640 (in bits) at Xtransint.h:148:1
                             '_XtransConnFd* _XtransConnInfo::send_fds', at offset 704 (in bits) at Xtransint.h:149:1
-                          1 data member change:
-                            type of '_Xtransport* _XtransConnInfo::transptr' changed:
-                              in pointed to type 'struct _Xtransport' at Xtransint.h:158:1:
-                                type size hasn't changed
-                                3 data member changes (16 filtered):
-                                  type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCOTSClient' changed:
-                                    in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)':
-                                      parameter 2 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 3 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 4 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                  type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCOTSServer' changed:
-                                    in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)':
-                                      parameter 2 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 3 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 4 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                  type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCLTSServer' changed:
-                                    in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)':
-                                      parameter 2 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 3 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
-                                      parameter 4 of type 'char*' changed:
-                                        in pointed to type 'char':
-                                          entity changed from 'char' to 'const char'
-                                          type size hasn't changed
+                          no data member change (1 filtered);
               type of '_IcePingWait* _IceConn::ping_waits' changed:
                 in pointed to type 'struct _IcePingWait' at ICEconn.h:48:1:
                   entity changed from 'struct _IcePingWait' to compatible type 'typedef _IcePingWait' at ICEconn.h:48:1
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 63d1fa5c..1594161c 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, 13 Changed (94 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 10 Changed (97 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,7 @@
     [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}
 
-  13 functions with some indirect sub-type change:
+  10 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:
@@ -105,10 +105,7 @@
                           '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
+                        no member function changes (4 filtered);
                         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
@@ -118,10 +115,7 @@
                           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
+                              no member function changes (8 filtered);
                               1 data member insertion:
                                 'bool tbb::internal::market::join_workers', at offset 384 (in bits) at market.h:88:1
                               7 data member changes:
@@ -182,10 +176,7 @@
             '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
+          no member function changes (4 filtered);
           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:
@@ -225,10 +216,6 @@
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334: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:
@@ -250,14 +237,6 @@
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334: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::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:
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 daf0622c..dda2fb76 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, 13 Changed (94 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 8 Changed (99 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,18 +24,7 @@
     [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}
 
-  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);
+  8 functions with some indirect sub-type change:
 
     [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:
@@ -54,20 +43,6 @@
                       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:
         type size hasn't changed
@@ -83,10 +58,6 @@
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334: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:
@@ -108,10 +79,6 @@
           1 base class insertion:
             class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334: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:
@@ -119,10 +86,6 @@
           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:
