authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-08-29 15:00:31-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-08-29 15:00:31-07:00
logb5dc8b67bc2e5dd920a5cabbe32c999f8ea71257
treeadb131547039e332d9d3c7bf42ab3b1d468072b2
parentde7270028d2b70ceea74c43be943b1b788c797a6

LLVM: update merged master branch code to opaque pointers


1 files changed, 13 insertions(+), 11 deletions(-)

src/codegen/llvm.zig+13-11
......@@ -964,19 +964,19 @@ pub const Object = struct {
964964 else => {},
965965 }
966966 }
967 const ints_llvm_ty = dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False);
968 const casted_ptr = builder.buildBitCast(arg_ptr, ints_llvm_ty.pointerType(0), "");
967 const floats_llvm_ty = dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False);
968 const casted_ptr = builder.buildBitCast(arg_ptr, floats_llvm_ty.pointerType(0), "");
969969 for (llvm_floats) |_, i_usize| {
970970 const i = @intCast(c_uint, i_usize);
971971 const param = llvm_func.getParam(i);
972 const field_ptr = builder.buildStructGEP(casted_ptr, i, "");
972 const field_ptr = builder.buildStructGEP(floats_llvm_ty, casted_ptr, i, "");
973973 const store_inst = builder.buildStore(param, field_ptr);
974974 store_inst.setAlignment(target.cpu.arch.ptrBitWidth() / 8);
975975 }
976976
977977 const is_by_ref = isByRef(param_ty);
978978 const loaded = if (is_by_ref) arg_ptr else l: {
979 const load_inst = builder.buildLoad(arg_ptr, "");
979 const load_inst = builder.buildLoad(param_llvm_ty, arg_ptr, "");
980980 load_inst.setAlignment(param_alignment);
981981 break :l load_inst;
982982 };
......@@ -4529,13 +4529,13 @@ pub const FuncGen = struct {
45294529 else => {},
45304530 }
45314531 }
4532 const ints_llvm_ty = self.dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False);
4533 const casted_ptr = self.builder.buildBitCast(arg_ptr, ints_llvm_ty.pointerType(0), "");
4532 const floats_llvm_ty = self.dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False);
4533 const casted_ptr = self.builder.buildBitCast(arg_ptr, floats_llvm_ty.pointerType(0), "");
45344534 try llvm_args.ensureUnusedCapacity(it.llvm_types_len);
45354535 for (llvm_floats) |_, i_usize| {
45364536 const i = @intCast(c_uint, i_usize);
4537 const field_ptr = self.builder.buildStructGEP(casted_ptr, i, "");
4538 const load_inst = self.builder.buildLoad(field_ptr, "");
4537 const field_ptr = self.builder.buildStructGEP(floats_llvm_ty, casted_ptr, i, "");
4538 const load_inst = self.builder.buildLoad(field_types[i], field_ptr, "");
45394539 load_inst.setAlignment(target.cpu.arch.ptrBitWidth() / 8);
45404540 llvm_args.appendAssumeCapacity(load_inst);
45414541 }
......@@ -8169,7 +8169,7 @@ pub const FuncGen = struct {
81698169
81708170 const llvm_fn = try self.getIsNamedEnumValueFunction(enum_ty);
81718171 const params = [_]*const llvm.Value{operand};
8172 return self.builder.buildCall(llvm_fn, &params, params.len, .Fast, .Auto, "");
8172 return self.builder.buildCall(llvm_fn.globalGetValueType(), llvm_fn, &params, params.len, .Fast, .Auto, "");
81738173 }
81748174
81758175 fn getIsNamedEnumValueFunction(self: *FuncGen, enum_ty: Type) !*const llvm.Value {
......@@ -9249,8 +9249,9 @@ pub const FuncGen = struct {
92499249
92509250 switch (target.cpu.arch) {
92519251 .x86_64 => {
9252 const array_llvm_ty = usize_llvm_ty.arrayType(6);
92529253 const array_ptr = fg.valgrind_client_request_array orelse a: {
9253 const array_ptr = fg.buildAlloca(usize_llvm_ty.arrayType(6));
9254 const array_ptr = fg.buildAlloca(array_llvm_ty);
92549255 array_ptr.setAlignment(usize_alignment);
92559256 fg.valgrind_client_request_array = array_ptr;
92569257 break :a array_ptr;
......@@ -9261,7 +9262,7 @@ pub const FuncGen = struct {
92619262 const indexes = [_]*const llvm.Value{
92629263 zero, usize_llvm_ty.constInt(@intCast(c_uint, i), .False),
92639264 };
9264 const elem_ptr = fg.builder.buildInBoundsGEP(array_ptr, &indexes, indexes.len, "");
9265 const elem_ptr = fg.builder.buildInBoundsGEP(array_llvm_ty, array_ptr, &indexes, indexes.len, "");
92659266 const store_inst = fg.builder.buildStore(elem, elem_ptr);
92669267 store_inst.setAlignment(usize_alignment);
92679268 }
......@@ -9291,6 +9292,7 @@ pub const FuncGen = struct {
92919292 );
92929293
92939294 const call = fg.builder.buildCall(
9295 fn_llvm_ty,
92949296 asm_fn,
92959297 &args,
92969298 args.len,