From 785c27daa7a84734c29dbbbb35d084dcdd8752f2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 6 Jun 2021 12:35:38 +0100 Subject: Fix 128-bit integer to float cast by explicitly calling the procedure direct; Fix #781 --- src/llvm_backend.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/llvm_backend.cpp') diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 505d45b93..a4e6ddbe5 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -7821,6 +7821,17 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { return lb_emit_conv(p, res, t); } + if (is_type_integer_128bit(src)) { + auto args = array_make(temporary_allocator(), 1); + args[0] = value; + char const *call = "floattidf"; + if (is_type_unsigned(src)) { + call = "floattidf_unsigned"; + } + lbValue res_f64 = lb_emit_runtime_call(p, call, args); + return lb_emit_conv(p, res_f64, t); + } + lbValue res = {}; res.type = t; if (is_type_unsigned(src)) { -- cgit v1.2.3