diff options
| author | Cody Tapscott <cody+topolarity@tapscott.me> | 2022-01-24 11:30:09 -0700 |
|---|---|---|
| committer | Cody Tapscott <cody+topolarity@tapscott.me> | 2022-01-24 11:58:43 -0700 |
| commit | 799bd81b080cebd246698f054cb3c243d39ab4f9 (patch) | |
| tree | d03f2a3abb4956968978c0e832c40837560ba36f /src/codegen/c.zig | |
| parent | a0732117d07f9dc9b8afb457d935ca84411ec233 (diff) | |
| download | zig-799bd81b080cebd246698f054cb3c243d39ab4f9.tar.gz zig-799bd81b080cebd246698f054cb3c243d39ab4f9.zip | |
Add support for rendering `.elem_ptr`
Diffstat (limited to 'src/codegen/c.zig')
| -rw-r--r-- | src/codegen/c.zig | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index de1636cd96..b545b64059 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -408,6 +408,18 @@ pub const DeclGen = struct { try dg.renderValue(writer, Type.usize, slice.len); try writer.writeAll("}"); }, + .elem_ptr => { + const elem_ptr = val.castTag(.elem_ptr).?.data; + var arena = std.heap.ArenaAllocator.init(dg.module.gpa); + defer arena.deinit(); + const elem_ptr_ty = try ty.elemPtrType(arena.allocator()); + + try writer.writeAll("(&(("); + try dg.renderType(writer, ty); + try writer.writeByte(')'); + try dg.renderValue(writer, elem_ptr_ty, elem_ptr.array_ptr); + try writer.print(")[{d}])", .{elem_ptr.index}); + }, .function => { const func = val.castTag(.function).?.data; try dg.renderDeclName(func.owner_decl, writer); |
