| ... | @@ -4113,14 +4113,13 @@ fn finishResolveComptimeKnownAllocPtr( | ... | @@ -4113,14 +4113,13 @@ fn finishResolveComptimeKnownAllocPtr( |
| 4113 | // We're almost done - we have the resolved comptime value. We just need to | 4113 | // We're almost done - we have the resolved comptime value. We just need to |
| 4114 | // eliminate the now-dead runtime instructions. | 4114 | // eliminate the now-dead runtime instructions. |
| 4115 | | 4115 | |
| 4116 | // We will rewrite the AIR to eliminate the alloc and all stores to it. | 4116 | // This instruction has type `alloc_ty`, meaning we can rewrite the `alloc` AIR instruction to |
| 4117 | // This will cause instructions deriving field pointers etc of the alloc to | 4117 | // this one to drop the side effect. We also need to rewrite the stores; we'll turn them to this |
| 4118 | // become invalid, however, since we are removing all stores to those pointers, | 4118 | // too because it doesn't really matter what they become. |
| 4119 | // they will be eliminated by Liveness before they reach codegen. | 4119 | const nop_inst: Air.Inst = .{ .tag = .bitcast, .data = .{ .ty_op = .{ |
| 4120 | | 4120 | .ty = .fromIntern(alloc_ty.toIntern()), |
| 4121 | // The specifics of this instruction aren't really important: we just want | 4121 | .operand = .zero_usize, |
| 4122 | // Liveness to elide it. | 4122 | } } }; |
| 4123 | const nop_inst: Air.Inst = .{ .tag = .bitcast, .data = .{ .ty_op = .{ .ty = .u8_type, .operand = .zero_u8 } } }; | | |
| 4124 | | 4123 | |
| 4125 | sema.air_instructions.set(@intFromEnum(alloc_inst), nop_inst); | 4124 | sema.air_instructions.set(@intFromEnum(alloc_inst), nop_inst); |
| 4126 | for (comptime_info.stores.items(.inst)) |store_inst| { | 4125 | for (comptime_info.stores.items(.inst)) |store_inst| { |