瀏覽代碼

emit correct float32 constant (requires HL 1.10)

Nicolas Cannasse 6 年之前
父節點
當前提交
af52b22ab8
共有 1 個文件被更改,包括 10 次插入0 次删除
  1. 10 0
      src/generators/genhl.ml

+ 10 - 0
src/generators/genhl.ml

@@ -1032,6 +1032,16 @@ let rec eval_to ctx e (t:ttype) =
 		let r = alloc_tmp ctx t in
 		let r = alloc_tmp ctx t in
 		op ctx (OFloat (r,alloc_float ctx (Int32.to_float i)));
 		op ctx (OFloat (r,alloc_float ctx (Int32.to_float i)));
 		r
 		r
+	| TConst (TInt i), HF32 ->
+		let r = alloc_tmp ctx t in
+		let bits = Int32.bits_of_float (Int32.to_float i) in
+		op ctx (OFloat (r,alloc_float ctx (Int64.float_of_bits (Int64.of_int32 bits))));
+		r
+	| TConst (TFloat f), HF32 ->
+		let r = alloc_tmp ctx t in
+		let bits = Int32.bits_of_float (float_of_string f) in
+		op ctx (OFloat (r,alloc_float ctx (Int64.float_of_bits (Int64.of_int32 bits))));
+		r
 	| _ ->
 	| _ ->
 		let r = eval_expr ctx e in
 		let r = eval_expr ctx e in
 		cast_to ctx r t e.epos
 		cast_to ctx r t e.epos