diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-04-20 00:49:38 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-04-21 16:36:31 -0400 |
| commit | a1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f (patch) | |
| tree | ffed4a8f6c2053ec330f12b34f63c3d14f374bda /src/codegen/c.zig | |
| parent | d98974e826791e4546a72599a1a5fb24692d5acf (diff) | |
| download | zig-a1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f.tar.gz zig-a1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f.zip | |
cbe: fix remaining aarch64 issues
Diffstat (limited to 'src/codegen/c.zig')
| -rw-r--r-- | src/codegen/c.zig | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 88185f32d5..f2c65e098a 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -6070,9 +6070,18 @@ fn airAtomicRmw(f: *Function, inst: Air.Inst.Index) !CValue { if (is_float) try writer.writeAll("_float"); try writer.writeByte('('); try f.writeCValue(writer, local, .Other); - try writer.writeAll(", (zig_atomic("); - try f.renderType(writer, ty); - try writer.writeByte(')'); + try writer.writeAll(", ("); + switch (extra.op()) { + else => { + try writer.writeAll("zig_atomic("); + try f.renderType(writer, ty); + try writer.writeByte(')'); + }, + .Nand, .Min, .Max => { + // These are missing from stdatomic.h, so no atomic types for now. + try f.renderType(writer, ty); + }, + } if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile"); try writer.writeAll(" *)"); try f.writeCValue(writer, ptr, .Other); |
