Преглед изворни кода

Allow `uintptr` <-> `[^]T`

gingerBill пре 4 година
родитељ
комит
f99bea12c7
1 измењених фајлова са 12 додато и 0 уклоњено
  1. 12 0
      src/llvm_backend_expr.cpp

+ 12 - 0
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), "");
 		res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), "");
 		return res;
 		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 1
 	if (is_type_union(dst)) {
 	if (is_type_union(dst)) {