Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision bff227f73387fd7ed67a8a31545259b27d4ddc24)
+++ src/Concurrency/Keywords.cc	(revision fd344aa36c1b2ce6ad3063c098b1dd496037e9bd)
@@ -291,5 +291,5 @@
 			LinkageSpec::Cforall,
 			nullptr,
-			new PointerType(
+			new ReferenceType(
 				noQualifiers,
 				new StructInstType(
@@ -447,11 +447,11 @@
 
 		//Makes sure it's not a copy
-		PointerType* pty = dynamic_cast< PointerType * >( ty );
 		ReferenceType* rty = dynamic_cast< ReferenceType * >( ty );
-		if( ! pty && ! rty ) throw SemanticError( "Mutex argument must be of pointer/reference type ", arg );
+		if( ! rty ) throw SemanticError( "Mutex argument must be of reference type ", arg );
 
 		//Make sure the we are pointing directly to a type
-		Type* base = pty ? pty->get_base() : rty->get_base();
-		if(  dynamic_cast< PointerType * >( base ) ) throw SemanticError( "Mutex argument have exactly one level of indirection ", arg );
+		Type* base = rty->get_base();
+		if( dynamic_cast< ReferenceType * >( base ) ) throw SemanticError( "Mutex argument have exactly one level of indirection ", arg );
+		if( dynamic_cast< PointerType * >( base ) ) throw SemanticError( "Mutex argument have exactly one level of indirection ", arg );
 
 		//Make sure that typed isn't mutex
