aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-03-27 14:52:12 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-03-27 14:52:12 -0700
commit3fc0e0c57bcc8eb4a14712abc20c16677722fce0 (patch)
tree849d11d95c2052e3b009cbf5ca112d15159644b9 /src
parentc8f844027185b808e2176a73fd41c955bc6e153e (diff)
downloadzig-3fc0e0c57bcc8eb4a14712abc20c16677722fce0.tar.gz
zig-3fc0e0c57bcc8eb4a14712abc20c16677722fce0.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index beab957529..3afc6e2bd3 100644
--- a/src/Sema.zig
+++ b/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 {