| author | |
| committer | |
| log | d84959d9e23799c4688836fbab90d3b9518fe60a |
| tree | 7fc74911935abe8745eab3d4b170e52abc848e37 |
| parent | 2be592bb3ca71621422428ec8874b34a77606013 |
2 files changed, 10 insertions(+), 1 deletions(-)
src/codegen/llvm/FuncGen.zig+1-1| ... | @@ -5220,7 +5220,7 @@ fn airLoad(fg: *FuncGen, inst: Air.Inst.Index) Allocator.Error!Builder.Value { | ... | @@ -5220,7 +5220,7 @@ fn airLoad(fg: *FuncGen, inst: Air.Inst.Index) Allocator.Error!Builder.Value { |
| 5220 | const backing_int_ty = try fg.pt.intType(.unsigned, @intCast(ptr_info.packed_offset.host_size * 8)); | 5220 | const backing_int_ty = try fg.pt.intType(.unsigned, @intCast(ptr_info.packed_offset.host_size * 8)); |
| 5221 | const llvm_backing_int_ty = try o.lowerType(backing_int_ty, .as_value); | 5221 | const llvm_backing_int_ty = try o.lowerType(backing_int_ty, .as_value); |
| 5222 | 5222 | ||
| 5223 | const backing_int_val = try fg.load(ptr, ptr_align, backing_int_ty, .normal); | 5223 | const backing_int_val = try fg.load(ptr, ptr_align, backing_int_ty, access_kind); |
| 5224 | 5224 | ||
| 5225 | const elem_bits = ptr_ty.childType(zcu).bitSize(zcu); | 5225 | const elem_bits = ptr_ty.childType(zcu).bitSize(zcu); |
| 5226 | const shift_amt = try o.builder.intValue(llvm_backing_int_ty, ptr_info.packed_offset.bit_offset); | 5226 | const shift_amt = try o.builder.intValue(llvm_backing_int_ty, ptr_info.packed_offset.bit_offset); |
test/llvm_ir.zig+9| ... | @@ -75,6 +75,15 @@ pub fn addCases(cases: *tests.LlvmIrContext) void { | ... | @@ -75,6 +75,15 @@ pub fn addCases(cases: *tests.LlvmIrContext) void { |
| 75 | "store volatile i16 321, ptr", | 75 | "store volatile i16 321, ptr", |
| 76 | }, .{}); | 76 | }, .{}); |
| 77 | 77 | ||
| 78 | cases.addMatches("unused volatile packed pointer load", | ||
| 79 | \\const S = packed struct(u16) { a: u2, b: u8, c: u6 }; | ||
| 80 | \\export fn entry(ptr: *volatile S) void { | ||
| 81 | \\ _ = ptr.b; | ||
| 82 | \\} | ||
| 83 | , &.{ | ||
| 84 | "load volatile i16, ptr", | ||
| 85 | }, .{}); | ||
| 86 | |||
| 78 | cases.addMatches("allowzero ptr load", | 87 | cases.addMatches("allowzero ptr load", |
| 79 | \\export fn entry(ptr: *allowzero i16) i16 { | 88 | \\export fn entry(ptr: *allowzero i16) i16 { |
| 80 | \\ return ptr.*; | 89 | \\ return ptr.*; |