aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index de9acf0ed..3056952f6 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -1272,6 +1272,18 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) {
res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), "");
return res;
}
+ if (is_type_multi_pointer(src) && is_type_uintptr(dst)) {
+ lbValue res = {};
+ res.type = t;
+ res.value = LLVMBuildPtrToInt(p->builder, value.value, lb_type(m, t), "");
+ return res;
+ }
+ if (is_type_uintptr(src) && is_type_multi_pointer(dst)) {
+ lbValue res = {};
+ res.type = t;
+ res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), "");
+ return res;
+ }
#if 1
if (is_type_union(dst)) {