From 6eecc4af99e2affc44d153e5f127200f2adf4642 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 11 Aug 2021 13:59:34 -0700 Subject: stage2 llvm backend: implement const inttoptr --- src/codegen/llvm.zig | 5 +++++ src/codegen/llvm/bindings.zig | 3 +++ 2 files changed, 8 insertions(+) (limited to 'src') 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 { -- cgit v1.2.3