Index: src/Validate/Autogen.cpp
===================================================================
--- src/Validate/Autogen.cpp	(revision fbaea97009f70b67f476a193ca6b049a1100402d)
+++ src/Validate/Autogen.cpp	(revision 7d29089ce266e027efd90b5274730df2b9fbb059)
@@ -401,5 +401,18 @@
 		add_qualifiers( dst->type, ast::CV::Qualifiers( ast::CV::Mutex ) );
 	}
-	return genProto( "^?{}", { dst }, {} );
+
+	ast::FunctionDecl * decl = genProto( "^?{}", { dst }, {} );
+	// For concurrent types, remove static storage and inline specifier, and add
+	// cfa_linkonce attribute so the destructor has external linkage with linkonce
+	// semantics. This is required for waitfor to work correctly across translation
+	// units - the function pointer must be the same everywhere, and cfa_linkonce
+	// ensures only one definition survives linking.
+	if ( isConcurrentType() ) {
+		auto mut = ast::mutate( decl );
+		mut->storage = ast::Storage::Classes();
+		mut->funcSpec = ast::Function::Specs();
+		mut->attributes.push_back( new ast::Attribute( "cfa_linkonce" ) );
+	}
+	return decl;
 }
 
