Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/AST/Decl.hpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -108,5 +108,5 @@
 	ObjectDecl( const CodeLocation & loc, const std::string & name, const Type * type,
 		const Init * init = nullptr, Storage::Classes storage = {},
-		Linkage::Spec linkage = Linkage::C, const Expr * bitWd = nullptr,
+		Linkage::Spec linkage = Linkage::Cforall, const Expr * bitWd = nullptr,
 		std::vector< ptr<Attribute> > && attrs = {}, Function::Specs fs = {} )
 	: DeclWithType( loc, name, storage, linkage, std::move(attrs), fs ), type( type ),
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/AST/Pass.impl.hpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -597,4 +597,5 @@
 			guard_symtab guard { *this };
 			// implicit add __func__ identifier as specified in the C manual 6.4.2.2
+			// This is a C name and so has C linkage.
 			static ast::ptr< ast::ObjectDecl > func{ new ast::ObjectDecl{
 				CodeLocation{}, "__func__",
@@ -602,5 +603,8 @@
 					new ast::BasicType{ ast::BasicType::Char, ast::CV::Const },
 					nullptr, VariableLen, DynamicDim
-				}
+				},
+				nullptr,
+				ast::Storage::Classes(),
+				ast::Linkage::C,
 			} };
 			__pass::symtab::addId( core, 0, func );
Index: src/Concurrency/KeywordsNew.cpp
===================================================================
--- src/Concurrency/KeywordsNew.cpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/Concurrency/KeywordsNew.cpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -398,7 +398,5 @@
 			new ast::ReferenceType( vtable_object->type, ast::CV::Const ),
 			new ast::SingleInit( location,
-				new ast::VariableExpr( location, vtable_object ) ),
-			ast::Storage::Classes(),
-			ast::Linkage::Cforall
+				new ast::VariableExpr( location, vtable_object ) )
 		)
 	);
@@ -471,8 +469,5 @@
 		location,
 		"this",
-		new ast::ReferenceType( new ast::StructInstType( decl ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::ReferenceType( new ast::StructInstType( decl ) )
 	);
 
@@ -480,8 +475,5 @@
 		location,
 		"ret",
-		new ast::PointerType( new ast::StructInstType( type_decl ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::PointerType( new ast::StructInstType( type_decl ) )
 	);
 
@@ -530,8 +522,5 @@
 		location,
 		field_name,
-		new ast::StructInstType( type_decl ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::StructInstType( type_decl )
 	);
 
@@ -577,8 +566,5 @@
 		location,
 		"this",
-		new ast::ReferenceType( new ast::StructInstType( decl ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::ReferenceType( new ast::StructInstType( decl ) )
 	);
 
@@ -1077,7 +1063,5 @@
 				) }
 			)
-		),
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		)
 	);
 
@@ -1107,7 +1091,5 @@
 				{},
 				ast::MaybeConstruct
-			),
-			ast::Storage::Classes(),
-			ast::Linkage::Cforall
+			)
 		))
 	);
@@ -1161,7 +1143,5 @@
 				}
 			)
-		),
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		)
 	);
 
@@ -1190,7 +1170,5 @@
 				{},
 				ast::MaybeConstruct
-			),
-			ast::Storage::Classes(),
-			ast::Linkage::Cforall
+			)
 		))
 	);
@@ -1296,7 +1274,5 @@
 				}
 			)
-		),
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		)
 	);
 
@@ -1370,7 +1346,5 @@
 					{},
 					ast::MaybeConstruct
-				),
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
+				)
 			)
 		)
@@ -1513,7 +1487,5 @@
 				{},
 				ast::MaybeConstruct
-			),
-			ast::Storage::Classes(),
-			ast::Linkage::Cforall
+			)
 		)
 	));
Index: src/ControlStruct/ExceptDeclNew.cpp
===================================================================
--- src/ControlStruct/ExceptDeclNew.cpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/ControlStruct/ExceptDeclNew.cpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -110,8 +110,5 @@
 		"parent",
 		new ast::PointerType(
-			new ast::StructInstType( "__cfavir_type_info", ast::CV::Const ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+			new ast::StructInstType( "__cfavir_type_info", ast::CV::Const ) )
 	) );
 	decl->body = true;
@@ -166,40 +163,25 @@
 		location,
 		"__cfavir_typeid",
-		new ast::PointerType( typeIdType ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::PointerType( typeIdType )
 	);
 	ast::ObjectDecl * size = new ast::ObjectDecl(
 		location,
 		"size",
-		new ast::TypeInstType( "size_t", ast::TypeDecl::Dtype ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::TypeInstType( "size_t", ast::TypeDecl::Dtype )
 	);
 	ast::ObjectDecl * copy = new ast::ObjectDecl(
 		location,
 		"copy",
-		new ast::PointerType( createCopyFuncType( exceptionName, params ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::PointerType( createCopyFuncType( exceptionName, params ) )
 	);
 	ast::ObjectDecl * dtor = new ast::ObjectDecl(
 		location,
 		"^?{}",
-		new ast::PointerType( createDtorFuncType( exceptionName, params ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::PointerType( createDtorFuncType( exceptionName, params ) )
 	);
 	ast::ObjectDecl * msg = new ast::ObjectDecl(
 		location,
 		"msg",
-		new ast::PointerType( createMsgFuncType( exceptionName, params ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::PointerType( createMsgFuncType( exceptionName, params ) )
 	);
 	ast::StructDecl * decl = new ast::StructDecl(
@@ -229,8 +211,5 @@
 		"virtual_table",
 		new ast::PointerType(
-			createVTableInstType( exceptionName, params ) ),
-		nullptr,
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+			createVTableInstType( exceptionName, params ) )
 	) );
 	for ( ast::ptr<ast::Decl> const & member : members ) {
@@ -289,8 +268,5 @@
 				"this",
 				new ast::PointerType(
-					createExceptionInstType( exceptionName, params ) ),
-				nullptr,
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
+					createExceptionInstType( exceptionName, params ) )
 			),
 			new ast::ObjectDecl(
@@ -298,19 +274,9 @@
 				"that",
 				new ast::PointerType(
-					createExceptionInstType( exceptionName, params ) ),
-				nullptr,
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
+					createExceptionInstType( exceptionName, params ) )
 			),
 		},
 		{
-			new ast::ObjectDecl(
-				location,
-				"",
-				new ast::VoidType(),
-				nullptr,
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
-			),
+			new ast::ObjectDecl( location, "", new ast::VoidType() ),
 		},
 		new ast::CompoundStmt( location, {
@@ -366,8 +332,5 @@
 				"this",
 				new ast::PointerType(
-					createExceptionInstType( exceptionName, params ) ),
-				nullptr,
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
+					createExceptionInstType( exceptionName, params ) )
 			),
 		},
@@ -377,8 +340,5 @@
 				"",
 				new ast::PointerType(
-					new ast::BasicType( ast::BasicType::Char, ast::CV::Const ) ),
-				nullptr,
-				ast::Storage::Classes(),
-				ast::Linkage::Cforall
+					new ast::BasicType( ast::BasicType::Char, ast::CV::Const ) )
 			),
 		},
@@ -432,7 +392,5 @@
 		tableName,
 		createVTableInstType( exceptionName, params ),
-		new ast::ListInit( location, std::move( inits ), std::move( dsigs ) ),
-		ast::Storage::Classes(),
-		ast::Linkage::Cforall
+		new ast::ListInit( location, std::move( inits ), std::move( dsigs ) )
 	);
 }
Index: src/ControlStruct/ExceptTranslateNew.cpp
===================================================================
--- src/ControlStruct/ExceptTranslateNew.cpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/ControlStruct/ExceptTranslateNew.cpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -190,8 +190,5 @@
 		location,
 		"__handler_index",
-		new ast::BasicType(ast::BasicType::SignedInt),
-		nullptr, //init
-		ast::Storage::Classes{},
-		ast::Linkage::Cforall
+		new ast::BasicType( ast::BasicType::SignedInt )
 		);
 }
@@ -203,10 +200,5 @@
 		location,
 		"__exception_inst",
-		new ast::PointerType(
-			new ast::StructInstType( except_decl )
-			),
-		nullptr, //init
-		ast::Storage::Classes{},
-		ast::Linkage::Cforall
+		new ast::PointerType( new ast::StructInstType( except_decl ) )
 		);
 }
Index: src/InitTweak/FixInitNew.cpp
===================================================================
--- src/InitTweak/FixInitNew.cpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/InitTweak/FixInitNew.cpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -595,5 +595,4 @@
 		if ( arg && isIntrinsicCallExpr( dtor ) ) {
 			return new ast::CommaExpr(loc, arg, new ast::VariableExpr(loc, ret ) );
-			// return;
 		}
 
@@ -654,5 +653,4 @@
 		if ( ! result->isVoid() ) {
 			static UniqueName retNamer("_tmp_cp_ret");
-			// result = result->clone();
 			auto subResult = env->apply( result ).node;
 			auto ret = new ast::ObjectDecl(loc, retNamer.newName(), subResult, nullptr );
@@ -833,6 +831,4 @@
 			}
 
-			// stmtsToAddBefore.splice( stmtsToAddBefore.end(), fixer.pass.stmtsToAddBefore );
-			// stmtsToAddAfter.splice( stmtsToAddAfter.end(), fixer.pass.stmtsToAddAfter );
 			unqMap[mutExpr->id] = mutExpr;
 		} else {
@@ -1349,5 +1345,4 @@
 		auto tmp = new ast::ObjectDecl(loc, tempNamer.newName(), callExpr->args.front()->result );
 		declsToAddBefore.push_back( tmp );
-		// delete ctorExpr;
 
 		// build assignment and replace constructor's first argument with new temporary
Index: src/Validate/Autogen.cpp
===================================================================
--- src/Validate/Autogen.cpp	(revision 5cf1228fbb704ea7ccef879b4c60f16486335b9a)
+++ src/Validate/Autogen.cpp	(revision e8616b6271f88a2d29036c310ad330f23fbd5136)
@@ -370,12 +370,10 @@
 ast::ObjectDecl * FuncGenerator::dstParam() const {
 	return new ast::ObjectDecl( getLocation(), "_dst",
-		new ast::ReferenceType( ast::deepCopy( type ) ),
-		nullptr, {}, ast::Linkage::Cforall );
+		new ast::ReferenceType( ast::deepCopy( type ) ) );
 }
 
 ast::ObjectDecl * FuncGenerator::srcParam() const {
 	return new ast::ObjectDecl( getLocation(), "_src",
-		ast::deepCopy( type ),
-		nullptr, {}, ast::Linkage::Cforall );
+		ast::deepCopy( type ) );
 }
 
@@ -429,5 +427,4 @@
 		ast::ObjectDecl * param = new ast::ObjectDecl(
 			getLocation(), member->name, paramType );
-		param->linkage = ast::Linkage::Cforall;
 		for ( auto & attr : member->attributes ) {
 			if ( attr->isValidOnFuncParam() ) {
