Commit 3fc0e0c57b

Andrew Kelley <andrew@ziglang.org>
2022-03-27 23:52:12
Sema: implement `@setFloatMode`
We are putting off actual optimization of floats because we have a couple proposals being considered which would change how it works. In the meantime, lowering optimized float mode to be the same as strict is a perfectly legal way to implement the Zig language specification.
1 parent c8f8440
Changed files (1)
src/Sema.zig
@@ -4315,7 +4315,13 @@ fn zirSetCold(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!voi
 fn zirSetFloatMode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
     const inst_data = sema.code.instructions.items(.data)[inst].un_node;
     const src: LazySrcLoc = inst_data.src();
-    return sema.fail(block, src, "TODO: implement Sema.zirSetFloatMode", .{});
+    const float_mode = try sema.resolveBuiltinEnum(block, src, inst_data.operand, "FloatMode");
+    switch (float_mode) {
+        .Strict => return,
+        .Optimized => {
+            // TODO implement optimized float mode
+        },
+    }
 }
 
 fn zirSetRuntimeSafety(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {