Index: src/Concurrency/MutexFuncHash.hpp
===================================================================
--- src/Concurrency/MutexFuncHash.hpp	(revision a30fceb1a73c4ef2bbee39a2b5406da881f51111)
+++ src/Concurrency/MutexFuncHash.hpp	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -18,5 +18,4 @@
 #include "AST/Decl.hpp"
 #include "AST/Expr.hpp"
-#include "AST/Type.hpp"
 #include "SymTab/Mangler.hpp"
 
@@ -27,5 +26,5 @@
 // since function pointers may differ for static inline functions.
 static inline uint64_t hashMangle( const ast::DeclWithType * decl ) {
-	std::string name = Mangle::mangle( decl );
+	std::string name = Mangle::mangleType( decl );
 	uint64_t hash = 14695981039346656037ULL; // FNV offset basis
 	for ( char c : name ) {
@@ -36,14 +35,8 @@
 }
 
-// Create a ConstantExpr for the hash with proper ULL suffix to avoid
-// C compiler warnings about large unsigned constants.
-static inline ast::ConstantExpr * hashMangleExpr(
-		const CodeLocation & location, const ast::DeclWithType * decl ) {
-	uint64_t hash = hashMangle( decl );
-	return new ast::ConstantExpr{
-		location,
-		new ast::BasicType{ ast::BasicKind::LongLongUnsignedInt },
-		std::to_string( hash ) + "ull",
-		(unsigned long long)hash };
+// Create a ConstantExpr with the hash of the mangled name.
+static inline ast::ConstantExpr * hashMangleExpr( 
+	const CodeLocation & location, const ast::DeclWithType * decl ) {
+	return ast::ConstantExpr::from_ulonglong( location, hashMangle( decl ) );
 }
 
