aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-04-21 00:15:19 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-04-21 16:36:31 -0400
commita519c9daced7dc182a57d8a49992463eabf3c825 (patch)
tree596e8154fac01211c21ee66382898049de2b15e3 /src/codegen/c.zig
parente364627e3ea0de3037ced086406516d956c3bcd7 (diff)
downloadzig-a519c9daced7dc182a57d8a49992463eabf3c825.tar.gz
zig-a519c9daced7dc182a57d8a49992463eabf3c825.zip
cbe: fix atomic float min/max
These need `zig_atomic`, unlike int min/max.
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index 58b9de0cd0..832a97526e 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -6070,17 +6070,15 @@ fn airAtomicRmw(f: *Function, inst: Air.Inst.Index) !CValue {
try writer.writeByte('(');
try f.writeCValue(writer, local, .Other);
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);
- },
- }
+ const use_atomic = switch (extra.op()) {
+ else => true,
+ // These are missing from stdatomic.h, so no atomic types for now.
+ .Nand => false,
+ .Min, .Max => is_float,
+ };
+ if (use_atomic) try writer.writeAll("zig_atomic(");
+ try f.renderType(writer, ty);
+ if (use_atomic) try writer.writeByte(')');
if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
try writer.writeAll(" *)");
try f.writeCValue(writer, ptr, .Other);