Index: src/AST/SymbolTable.cpp
===================================================================
--- src/AST/SymbolTable.cpp	(revision eae8b37d7379001bb81375459612907897447955)
+++ src/AST/SymbolTable.cpp	(revision 64f3b9fefe9bf3caf101090443066ca16169610e)
@@ -522,4 +522,25 @@
 }
 
+void SymbolTable::reviseSpecialAsDeleted( const FunctionDecl * func ) {
+	SpecialFunctionKind kind = getSpecialFunctionKind(func->name);
+	assert( kind != NUMBER_OF_KINDS );
+	assert( func->linkage.is_overrideable );
+	IdTable::Ptr & idTable = specialFunctionTable[kind];
+
+	std::string otypeKey = getOtypeKey(func->type);
+	IdTable::iterator idHit = idTable->find( otypeKey );
+	assert( idHit != idTable->end() );
+	MangleTable::Ptr mangleTable = idHit->second;
+
+	std::string mangleName = Mangle::mangle( func, Mangle::Mode{ Mangle::NoOverrideable } );
+	MangleTable::iterator mangleHit = mangleTable->find( mangleName );
+	assert( mangleHit != mangleTable->end() );
+	IdData oldEntry = mangleHit->second;
+	assert( oldEntry.id == func );
+
+	mangleTable = mangleTable->set( mangleName, oldEntry.withDeleter( func ) );
+	idTable = idTable->set( otypeKey, mangleTable );
+}
+
 bool SymbolTable::removeSpecialOverrides(
 		SymbolTable::IdData & data, SymbolTable::MangleTable::Ptr & mangleTable ) {
Index: src/AST/SymbolTable.hpp
===================================================================
--- src/AST/SymbolTable.hpp	(revision eae8b37d7379001bb81375459612907897447955)
+++ src/AST/SymbolTable.hpp	(revision 64f3b9fefe9bf3caf101090443066ca16169610e)
@@ -177,4 +177,7 @@
 	void addFunction( const FunctionDecl * );
 
+	/// Reclassifies the previously-indexed special declaration, so `combine` shows it as deleted
+	void reviseSpecialAsDeleted( const FunctionDecl * );
+
 private:
 	void OnFindError( CodeLocation location, std::string error ) const;
