diff --git a/src/codegen/llvm/FuncGen.zig b/src/codegen/llvm/FuncGen.zig index f213d7cf7bf3ec2d1d7d0e4764a1002d9b590dc3..8d098e26bd8968b709df6415404b1552b2d34721 100644 --- a/src/codegen/llvm/FuncGen.zig +++ b/src/codegen/llvm/FuncGen.zig @@ -5220,7 +5220,7 @@ fn airLoad(fg: *FuncGen, inst: Air.Inst.Index) Allocator.Error!Builder.Value { const backing_int_ty = try fg.pt.intType(.unsigned, @intCast(ptr_info.packed_offset.host_size * 8)); const llvm_backing_int_ty = try o.lowerType(backing_int_ty, .as_value); - const backing_int_val = try fg.load(ptr, ptr_align, backing_int_ty, .normal); + const backing_int_val = try fg.load(ptr, ptr_align, backing_int_ty, access_kind); const elem_bits = ptr_ty.childType(zcu).bitSize(zcu); const shift_amt = try o.builder.intValue(llvm_backing_int_ty, ptr_info.packed_offset.bit_offset); diff --git a/test/llvm_ir.zig b/test/llvm_ir.zig index d7ceb45d637142bfd5ca605ac74af271a18fe794..9cb9dab42e85753e168fe7d9ca4f8c049754b19c 100644 --- a/test/llvm_ir.zig +++ b/test/llvm_ir.zig @@ -75,6 +75,15 @@ pub fn addCases(cases: *tests.LlvmIrContext) void { "store volatile i16 321, ptr", }, .{}); + cases.addMatches("unused volatile packed pointer load", + \\const S = packed struct(u16) { a: u2, b: u8, c: u6 }; + \\export fn entry(ptr: *volatile S) void { + \\ _ = ptr.b; + \\} + , &.{ + "load volatile i16, ptr", + }, .{}); + cases.addMatches("allowzero ptr load", \\export fn entry(ptr: *allowzero i16) i16 { \\ return ptr.*;