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