zig
zig copied to clipboard
divTrunc for i512 doesn't compile
Zig Version
0.11.0-dev.1975+e17998b39
Steps to Reproduce and Observed Behavior
const std = @import("std");
pub fn main() !void {
var a: i512 = 10;
var b: i512 = 2;
std.debug.print("{}", .{@divTrunc(a, b)});
}
(Or run this Zig bin)
Doing zig run:
error: ld.lld: undefined symbol: __divei4
note: referenced by main.zig:8
note: /home/ignacio/.cache/zig/o/589b29290ccbf587a228639187cbef57/main.o:(main.main)
note: did you mean: __udivei4
note: defined in: /home/ignacio/.cache/zig/o/569dca02bcfd71a4fcf698e1223e342b/libcompiler_rt.a(/home/ignacio/.cache/zig/o/569dca02bcfd71a4fcf698e1223e342b/libcompiler_rt.a.o)
Expected Behavior
Don't get a compile error.
Maybe some useful finding:
$ readelf -Ws /home/ignacio/.cache/zig/o/569dca02bcfd71a4fcf698e1223e342b/libcompiler_rt.a | grep divei
836: 0000000000000000 1534 FUNC WEAK DEFAULT 476 __udivei4
So __udivei4 is present (unsigned integer?) but not __divei4.
So __udivei4 is present (unsigned integer?) but not __divei4.
Yes, see https://github.com/ziglang/zig/pull/14023#issuecomment-1361724961: "Yes, the signed versions will follow [..]". Some more context https://github.com/ziglang/zig/pull/14609.