Index: src/GenPoly/Lvalue.cpp
===================================================================
--- src/GenPoly/Lvalue.cpp	(revision 36dfdac15a1061978a1b23f2ae753434d890fdd1)
+++ src/GenPoly/Lvalue.cpp	(revision f979f0ba3e91f53f961ddfb6b75fd4b82f468087)
@@ -313,6 +313,5 @@
 		//   &__ref_tmp_2;
 		// The last & comes from the remaining reference conversion code.
-		SemanticWarning( expr->arg->location,
-			Warning::RvalueToReferenceConversion, toCString( expr->arg ) );
+
 
 		// allowing conversion in the rvalue to const ref case
@@ -320,4 +319,9 @@
 		ast::Type const * targetType = dstType;
 		for (int i = 0; i < diff; ++i) targetType = (strict_dynamic_cast<ast::ReferenceType const *>(targetType))->base;
+
+		if (!targetType->qualifiers.is_const) {
+			SemanticWarning( expr->arg->location,
+				Warning::RvalueToReferenceConversion, toCString( expr->arg ) );
+		}
 
 		static UniqueName tmpNamer( "__ref_tmp_" );
