aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig5
-rw-r--r--src/codegen/llvm/bindings.zig3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 7cfbc8da5e..4f9a24f80c 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -768,6 +768,11 @@ pub const DeclGen = struct {
};
return self.context.constStruct(&fields, fields.len, .False);
},
+ .int_u64 => {
+ const llvm_usize = try self.llvmType(Type.initTag(.usize));
+ const llvm_int = llvm_usize.constInt(tv.val.toUnsignedInt(), .False);
+ return llvm_int.constIntToPtr(try self.llvmType(tv.ty));
+ },
else => |tag| return self.todo("implement const of pointer type '{}' ({})", .{ tv.ty, tag }),
},
.Array => {
diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig
index 4bb8a4a18b..da02e56ac8 100644
--- a/src/codegen/llvm/bindings.zig
+++ b/src/codegen/llvm/bindings.zig
@@ -130,6 +130,9 @@ pub const Value = opaque {
pub const constBitCast = LLVMConstBitCast;
extern fn LLVMConstBitCast(ConstantVal: *const Value, ToType: *const Type) *const Value;
+
+ pub const constIntToPtr = LLVMConstIntToPtr;
+ extern fn LLVMConstIntToPtr(ConstantVal: *const Value, ToType: *const Type) *const Value;
};
pub const Type = opaque {