diff --git a/include/abg-ir.h b/include/abg-ir.h
index d8ce0435..de53e00d 100644
--- a/include/abg-ir.h
+++ b/include/abg-ir.h
@@ -4133,11 +4133,11 @@ public:
   virtual ~class_or_union();
 
   friend method_decl_sptr
-  copy_member_function(class_or_union_sptr& t,
+  copy_member_function(class_or_union_sptr t,
 		       const method_decl*m);
 
   friend method_decl_sptr
-  copy_member_function(class_or_union_sptr& t,
+  copy_member_function(class_or_union_sptr t,
 		       const method_decl_sptr& m);
 
   friend void
@@ -4156,14 +4156,6 @@ public:
   friend class class_decl;
 }; // end class class_or_union
 
-method_decl_sptr
-copy_member_function(const class_or_union_sptr& clazz,
-		     const method_decl_sptr& f);
-
-method_decl_sptr
-copy_member_function(const class_or_union_sptr& clazz,
-		     const method_decl* f);
-
 bool
 operator==(const class_or_union_sptr& l, const class_or_union_sptr& r);
 
@@ -4319,11 +4311,11 @@ bool
 equals(const class_decl&, const class_decl&, change_kind*);
 
 method_decl_sptr
-copy_member_function(const class_decl_sptr& clazz,
+copy_member_function(class_decl_sptr clazz,
 		     const method_decl_sptr& f);
 
 method_decl_sptr
-copy_member_function(const class_decl_sptr& clazz,
+copy_member_function(class_decl_sptr clazz,
 		     const method_decl* f);
 void
 fixup_virtual_member_function(method_decl_sptr method);
@@ -4476,11 +4468,11 @@ bool
 equals(const union_decl&, const union_decl&, change_kind*);
 
 method_decl_sptr
-copy_member_function(const union_decl_sptr& union_type,
+copy_member_function(union_decl_sptr union_type,
 		     const method_decl_sptr& f);
 
 method_decl_sptr
-copy_member_function(const union_decl_sptr& union_type,
+copy_member_function(union_decl_sptr union_type,
 		     const method_decl* f);
 
 bool
diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc
index a41f0caf..baa9026c 100644
--- a/src/abg-dwarf-reader.cc
+++ b/src/abg-dwarf-reader.cc
@@ -4830,7 +4830,7 @@ public:
   /// on the destination one, then it's copied from the source class
   /// to the destination one.
   void
-  copy_missing_member_functions(const class_decl_sptr& dest_class,
+  copy_missing_member_functions(class_decl_sptr& dest_class,
 				const class_decl_sptr& src_class)
   {
     for (auto method : src_class->get_member_functions())
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 18676e5b..3ed0b4bc 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -24832,7 +24832,7 @@ equals(const class_or_union& l, const class_or_union& r, change_kind* k)
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const class_or_union_sptr& t,
+copy_member_function(class_or_union_sptr t,
 		     const method_decl_sptr& method)
 {return copy_member_function(t, method.get());}
 
@@ -24846,7 +24846,7 @@ copy_member_function(const class_or_union_sptr& t,
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const class_or_union_sptr& t, const method_decl* method)
+copy_member_function(class_or_union_sptr t, const method_decl* method)
 {
   ABG_ASSERT(t);
   ABG_ASSERT(method);
@@ -26259,7 +26259,7 @@ equals(const class_decl& l, const class_decl& r, change_kind* k)
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const class_decl_sptr& clazz, const method_decl_sptr& f)
+copy_member_function(class_decl_sptr clazz, const method_decl_sptr& f)
 {return copy_member_function(static_pointer_cast<class_or_union>(clazz), f);}
 
 /// Copy a method of a class into a new class.
@@ -26270,7 +26270,7 @@ copy_member_function(const class_decl_sptr& clazz, const method_decl_sptr& f)
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const class_decl_sptr& clazz, const method_decl* f)
+copy_member_function(class_decl_sptr clazz, const method_decl* f)
 {return copy_member_function(static_pointer_cast<class_or_union>(clazz), f);}
 
 /// Comparison operator for @ref class_decl.
@@ -27342,7 +27342,7 @@ equals(const union_decl& l, const union_decl& r, change_kind* k)
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const union_decl_sptr& union_type,
+copy_member_function(union_decl_sptr union_type,
 		     const method_decl_sptr& f)
 {return copy_member_function(union_type, f.get());}
 
@@ -27355,7 +27355,7 @@ copy_member_function(const union_decl_sptr& union_type,
 ///
 /// @return the resulting newly copied method.
 method_decl_sptr
-copy_member_function(const union_decl_sptr& union_type,
+copy_member_function(union_decl_sptr union_type,
 		     const method_decl* f)
 {
   const class_or_union_sptr t = union_type;
