aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-09-28 12:24:51 +0100
committergingerBill <bill@gingerbill.org>2021-09-28 12:24:51 +0100
commit6f872e04c85213406dcda52d3d8051f0a3022f6d (patch)
tree06d73532aa236bbd9e8c2f90224fdd6a4dd18359 /src/llvm_backend_expr.cpp
parentea0bf057272d34b66c0403718d60d315aea7c369 (diff)
Move redundant `auto_cast` error from `-vet` to `-vet-extra`
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 64ab2158a..de9acf0ed 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -1204,6 +1204,17 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) {
}
return lb_emit_conv(p, res, t);
}
+
+ if (is_type_integer_128bit(dst)) {
+ auto args = array_make<lbValue>(temporary_allocator(), 1);
+ args[0] = value;
+ char const *call = "fixunsdfdi";
+ if (is_type_unsigned(dst)) {
+ call = "fixunsdfti";
+ }
+ lbValue res_i128 = lb_emit_runtime_call(p, call, args);
+ return lb_emit_conv(p, res_i128, t);
+ }
lbValue res = {};
res.type = t;