zig icon indicating copy to clipboard operation
zig copied to clipboard

divTrunc for i512 doesn't compile

Open jsign opened this issue 2 years ago • 1 comments

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.

jsign avatar Mar 15 '23 19:03 jsign

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.

jsign avatar Mar 15 '23 23:03 jsign

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.

matu3ba avatar Mar 16 '23 20:03 matu3ba