-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.
Milestone
Description
comptime {
@compileLog(@trunc(@as(f32, 1) / @as(f32, 0)));
@compileLog(@floor(@as(f32, 1) / @as(f32, 0)));
}
comptime {
_ = @as(comptime_float, 1) / @as(comptime_float, 0);
}
comptime {
_ = @divTrunc(@as(f32, 1), @as(f32, 0));
}
comptime {
_ = @divFloor(@as(f32, 1), @as(f32, 0));
}
comptime {
_ = @rem(@as(f32, 1), @as(f32, 0));
}
comptime {
_ = @mod(@as(f32, 1), @as(f32, 0));
}$ zig build-obj repro.zig
repro.zig:6:34: error: division by zero here causes undefined behavior
_ = @as(comptime_float, 1) / @as(comptime_float, 0);
^~~~~~~~~~~~~~~~~~~~~~
referenced by:
root: lib/std/start.zig:3:22
comptime: lib/std/start.zig:27:9
2 reference(s) hidden; use '-freference-trace=4' to see all references
repro.zig:9:32: error: division by zero here causes undefined behavior
_ = @divTrunc(@as(f32, 1), @as(f32, 0));
^~~~~~~~~~~
repro.zig:12:32: error: division by zero here causes undefined behavior
_ = @divFloor(@as(f32, 1), @as(f32, 0));
^~~~~~~~~~~
repro.zig:15:27: error: division by zero here causes undefined behavior
_ = @rem(@as(f32, 1), @as(f32, 0));
^~~~~~~~~~~
repro.zig:18:27: error: division by zero here causes undefined behavior
_ = @mod(@as(f32, 1), @as(f32, 0));
^~~~~~~~~~~
Compile Log Output:
@as(f32, inf)
@as(f32, inf)
Float division by zero has perfectly well defined behavior in strict float mode.
As an added bonus for fixing this bug, you can delete the lines in test/behavior/x86_64/math.zig referencing this issue!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.