Explorar o código

fix auto int-to-float (close #785)

Nicolas Cannasse %!s(int64=6) %!d(string=hai) anos
pai
achega
b835bb0190
Modificáronse 1 ficheiros con 8 adicións e 2 borrados
  1. 8 2
      src/generators/genhl.ml

+ 8 - 2
src/generators/genhl.ml

@@ -1027,8 +1027,14 @@ let type_value ctx t p =
 		assert false
 
 let rec eval_to ctx e (t:ttype) =
-	let r = eval_expr ctx e in
-	cast_to ctx r t e.epos
+	match e.eexpr, t with
+	| TConst (TInt i), HF64 ->
+		let r = alloc_tmp ctx t in
+		op ctx (OFloat (r,alloc_float ctx (Int32.to_float i)));
+		r
+	| _ ->
+		let r = eval_expr ctx e in
+		cast_to ctx r t e.epos
 
 and cast_to ?(force=false) ctx (r:reg) (t:ttype) p =
 	let rt = rtype ctx r in