[applying,to,mainline] ir: Avoid duplicates when reading member functions

Message ID 87cyt1z891.fsf@redhat.com
State New
Headers
Series [applying,to,mainline] ir: Avoid duplicates when reading member functions |

Commit Message

Dodji Seketeli Feb. 12, 2024, 9:24 p.m. UTC
  Hello,

As the same class can be read several times, let's avoid having
duplicates of a given virtual member function.

	* src/abg-ir.cc (fixup_virtual_member_function): Check if a
	virtual member function with the same linkage name exists already
	before adding it in.
	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
	Adjust.
	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Adjust.
	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
	Adjust.
	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Adjust.
	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
	Adjust.
	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Applying to the master branch.
---
 src/abg-ir.cc                                 |   6 +-
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |  11 --
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |  22 ---
 .../test-read-dwarf/PR22122-libftdc.so.abi    | 174 ------------------
 .../test-read-dwarf/test10-pr18818-gcc.so.abi |  63 -------
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |   7 -
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |  14 --
 .../test22-pr19097-libstdc++.so.6.0.17.so.abi |  28 ---
 .../test9-pr18818-clang.so.abi                |  12 --
 9 files changed, 4 insertions(+), 333 deletions(-)
  

Patch

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 42fe022e..58e19c5b 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -25128,7 +25128,8 @@  fixup_virtual_member_function(method_decl_sptr method)
   for (m = klass->priv_->virtual_mem_fns_.begin();
        m != klass->priv_->virtual_mem_fns_.end();
        ++m)
-    if (m->get() == method.get())
+    if (m->get() == method.get()
+	|| (*m)->get_linkage_name() == method->get_linkage_name())
       break;
   if (m == klass->priv_->virtual_mem_fns_.end())
     klass->priv_->virtual_mem_fns_.push_back(method);
@@ -25150,7 +25151,8 @@  fixup_virtual_member_function(method_decl_sptr method)
   else
     {
       for (m = i->second.begin() ; m != i->second.end(); ++m)
-	if (m->get() == method.get())
+	if (m->get() == method.get()
+	    || (*m)->get_linkage_name() == method->get_linkage_name())
 	  break;
       if (m == i->second.end())
 	i->second.push_back(method);
diff --git a/tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi b/tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
index 2dcbb963..6c207b7e 100644
--- a/tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
+++ b/tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
@@ -13806,17 +13806,6 @@ 
           <return type-id='type-id-18'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- vtkPainterCommunicator::~vtkPainterCommunicator(int) -->
-        <function-decl name='~vtkPainterCommunicator' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Rendering/LIC/vtkPainterCommunicator.h' line='33' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'vtkPainterCommunicator*' -->
-          <parameter type-id='type-id-323' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-13' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-18'/>
-        </function-decl>
-      </member-function>
       <member-function access='private' vtable-offset='2'>
         <!-- void vtkPainterCommunicator::Copy(const vtkPainterCommunicator*, bool) -->
         <function-decl name='Copy' mangled-name='_ZN22vtkPainterCommunicator4CopyEPKS_b' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Rendering/LIC/vtkPainterCommunicator.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
diff --git a/tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi b/tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi
index b8a708cd..cc452f78 100644
--- a/tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi
+++ b/tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi
@@ -883,28 +883,6 @@ 
       <member-type access='private'>
         <!-- class vtkCommunicator::Operation -->
         <class-decl name='Operation' size-in-bits='64' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='94' column='1' id='type-id-23'>
-          <member-function access='private' destructor='yes' vtable-offset='-1'>
-            <!-- vtkCommunicator::Operation::~Operation(int) -->
-            <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <!-- implicit parameter of type 'vtkCommunicator::Operation*' -->
-              <parameter type-id='type-id-24' is-artificial='yes'/>
-              <!-- artificial parameter of type 'int' -->
-              <parameter type-id='type-id-19' is-artificial='yes'/>
-              <!-- void -->
-              <return type-id='type-id-13'/>
-            </function-decl>
-          </member-function>
-          <member-function access='private' destructor='yes' vtable-offset='-1'>
-            <!-- vtkCommunicator::Operation::~Operation(int) -->
-            <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <!-- implicit parameter of type 'vtkCommunicator::Operation*' -->
-              <parameter type-id='type-id-24' is-artificial='yes'/>
-              <!-- artificial parameter of type 'int' -->
-              <parameter type-id='type-id-19' is-artificial='yes'/>
-              <!-- void -->
-              <return type-id='type-id-13'/>
-            </function-decl>
-          </member-function>
           <member-function access='private' destructor='yes' vtable-offset='-1'>
             <!-- vtkCommunicator::Operation::~Operation(int) -->
             <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
diff --git a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
index 2ba39ed1..9294f23a 100644
--- a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
+++ b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
@@ -444,42 +444,6 @@ 
             <return type-id='type-id-193'/>
           </function-decl>
         </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_ios' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-99' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
         <member-function access='public' destructor='yes' vtable-offset='0'>
           <function-decl name='~basic_ios' mangled-name='_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/basic_ios.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-99' is-artificial='yes'/>
@@ -488,42 +452,6 @@ 
         </member-function>
       </class-decl>
       <class-decl name='basic_iostream&lt;char, std::char_traits&lt;char&gt; &gt;' size-in-bits='2304' visibility='default' id='type-id-100'>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-101' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
         <member-function access='public' destructor='yes' vtable-offset='0'>
           <function-decl name='~basic_iostream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='856' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-101' is-artificial='yes'/>
@@ -550,42 +478,6 @@ 
             <return type-id='type-id-193'/>
           </function-decl>
         </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_istream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-103' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
         <member-function access='public' destructor='yes' vtable-offset='0'>
           <function-decl name='~basic_istream' mangled-name='_ZNSiD2Ev' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/istream' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-103' is-artificial='yes'/>
@@ -594,42 +486,6 @@ 
         </member-function>
       </class-decl>
       <class-decl name='basic_streambuf&lt;char, std::char_traits&lt;char&gt; &gt;' size-in-bits='512' visibility='default' id='type-id-104'>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
-        <member-function access='public' destructor='yes' vtable-offset='0'>
-          <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-105' is-artificial='yes'/>
-            <return type-id='type-id-193'/>
-          </function-decl>
-        </member-function>
         <member-function access='public' destructor='yes' vtable-offset='0'>
           <function-decl name='~basic_streambuf' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/streambuf' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-105' is-artificial='yes'/>
@@ -1299,36 +1155,6 @@ 
               <return type-id='type-id-193'/>
             </function-decl>
           </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~basic_stringstream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-97' is-artificial='yes'/>
-              <return type-id='type-id-193'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~basic_stringstream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-97' is-artificial='yes'/>
-              <return type-id='type-id-193'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~basic_stringstream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-97' is-artificial='yes'/>
-              <return type-id='type-id-193'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~basic_stringstream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-97' is-artificial='yes'/>
-              <return type-id='type-id-193'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~basic_stringstream' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-97' is-artificial='yes'/>
-              <return type-id='type-id-193'/>
-            </function-decl>
-          </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
             <function-decl name='~basic_stringstream' mangled-name='_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/sstream' line='717' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-97' is-artificial='yes'/>
diff --git a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
index 40a55874..20cce039 100644
--- a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
+++ b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
@@ -2405,41 +2405,6 @@ 
               <return type-id='type-id-47'/>
             </function-decl>
           </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~error_category' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-82' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~error_category' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-82' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~error_category' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-82' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~error_category' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-82' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~error_category' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-82' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
             <function-decl name='~error_category' mangled-name='_ZN5boost6system14error_categoryD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/error_code.hpp' line='188' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system14error_categoryD0Ev'>
               <parameter type-id='type-id-82' is-artificial='yes'/>
@@ -6609,34 +6574,6 @@ 
               <return type-id='type-id-47'/>
             </function-decl>
           </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-336' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-336' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-336' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-336' is-artificial='yes'/>
-              <parameter type-id='type-id-12' is-artificial='yes'/>
-              <return type-id='type-id-47'/>
-            </function-decl>
-          </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
             <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system12system_errorD0Ev'>
               <parameter type-id='type-id-336' is-artificial='yes'/>
diff --git a/tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi b/tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
index 69237e27..56f2f137 100644
--- a/tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
+++ b/tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
@@ -8326,13 +8326,6 @@ 
           <return type-id='type-id-18'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <function-decl name='~vtkPainterCommunicator' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Rendering/LIC/vtkPainterCommunicator.h' line='33' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <parameter type-id='type-id-323' is-artificial='yes'/>
-          <parameter type-id='type-id-13' is-artificial='yes'/>
-          <return type-id='type-id-18'/>
-        </function-decl>
-      </member-function>
       <member-function access='private' vtable-offset='2'>
         <function-decl name='Copy' mangled-name='_ZN22vtkPainterCommunicator4CopyEPKS_b' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Rendering/LIC/vtkPainterCommunicator.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-323' is-artificial='yes'/>
diff --git a/tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi b/tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi
index e59603d2..980ae615 100644
--- a/tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi
+++ b/tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi
@@ -467,20 +467,6 @@ 
       <base-class access='public' layout-offset-in-bits='0' type-id='type-id-22'/>
       <member-type access='private'>
         <class-decl name='Operation' size-in-bits='64' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='94' column='1' id='type-id-23'>
-          <member-function access='private' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-24' is-artificial='yes'/>
-              <parameter type-id='type-id-19' is-artificial='yes'/>
-              <return type-id='type-id-13'/>
-            </function-decl>
-          </member-function>
-          <member-function access='private' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-24' is-artificial='yes'/>
-              <parameter type-id='type-id-19' is-artificial='yes'/>
-              <return type-id='type-id-13'/>
-            </function-decl>
-          </member-function>
           <member-function access='private' destructor='yes' vtable-offset='-1'>
             <function-decl name='~Operation' filepath='/tmp/legendre/spack-stage/spack-stage-R_crTC/VTK-6.1.0/Parallel/Core/vtkCommunicator.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-24' is-artificial='yes'/>
diff --git a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
index 51ff158d..20f9a6b7 100644
--- a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
+++ b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
@@ -9903,13 +9903,6 @@ 
                 <return type-id='type-id-5'/>
               </function-decl>
             </member-function>
-            <member-function access='public' destructor='yes' vtable-offset='-1'>
-              <function-decl name='~_Impl_base' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/thread' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
-                <parameter type-id='type-id-586' is-artificial='yes'/>
-                <parameter type-id='type-id-6' is-artificial='yes'/>
-                <return type-id='type-id-5'/>
-              </function-decl>
-            </member-function>
             <member-function access='public' vtable-offset='2'>
               <function-decl name='_M_run' mangled-name='_ZNSt6thread10_Impl_base6_M_runEv' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/thread' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
                 <parameter type-id='type-id-586' is-artificial='yes'/>
@@ -28807,13 +28800,6 @@ 
               <return type-id='type-id-5'/>
             </function-decl>
           </member-function>
-          <member-function access='private' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~_Automaton' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_nfa.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-1366' is-artificial='yes'/>
-              <parameter type-id='type-id-6' is-artificial='yes'/>
-              <return type-id='type-id-5'/>
-            </function-decl>
-          </member-function>
           <member-function access='private' const='yes' vtable-offset='2'>
             <function-decl name='_M_sub_count' mangled-name='_ZNKSt7__regex10_Automaton12_M_sub_countEv' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_nfa.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-1306' is-artificial='yes'/>
@@ -28822,13 +28808,6 @@ 
           </member-function>
         </class-decl>
         <class-decl name='_PatternCursor' size-in-bits='64' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_cursor.h' line='38' column='1' id='type-id-1310'>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~_PatternCursor' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_cursor.h' line='40' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-1367' is-artificial='yes'/>
-              <parameter type-id='type-id-6' is-artificial='yes'/>
-              <return type-id='type-id-5'/>
-            </function-decl>
-          </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
             <function-decl name='~_PatternCursor' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_cursor.h' line='40' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-1367' is-artificial='yes'/>
@@ -28869,13 +28848,6 @@ 
               <return type-id='type-id-5'/>
             </function-decl>
           </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~_Scanner_base' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_compiler.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-1369' is-artificial='yes'/>
-              <parameter type-id='type-id-6' is-artificial='yes'/>
-              <return type-id='type-id-5'/>
-            </function-decl>
-          </member-function>
         </class-decl>
         <class-decl name='_State' size-in-bits='640' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/regex_nfa.h' line='200' column='1' id='type-id-1316'>
           <member-type access='public'>
diff --git a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
index b06ade20..94d766c5 100644
--- a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
+++ b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
@@ -4803,18 +4803,6 @@ 
               <return type-id='type-id-118'/>
             </function-decl>
           </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-206' is-artificial='yes'/>
-              <return type-id='type-id-118'/>
-            </function-decl>
-          </member-function>
-          <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~system_error' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-              <parameter type-id='type-id-206' is-artificial='yes'/>
-              <return type-id='type-id-118'/>
-            </function-decl>
-          </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
             <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD2Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-206' is-artificial='yes'/>