Skip to content

Sema: emits incorrect safety check for integer vector division #22914

Closed
@jacobly0

Description

@jacobly0
var lhs: @Vector(2, i8) = .{ -128, 0 };
const rhs: @Vector(2, i8) = .{ 1, -1 };
pub fn main() void {
    _ = @divTrunc(lhs, rhs);
}
$ zig run repro.zig
thread 476777 panic: integer overflow
repro.zig:4:9: 0x103a524 in main (repro)
    _ = @divTrunc(lhs, rhs);
        ^
lib/std/start.zig:647:22: 0x1039f72 in posixCallMainAndExit (repro)
            root.main();
                     ^
lib/std/start.zig:271:5: 0x1039b4d in _start (repro)
    asm volatile (switch (native_arch) {
    ^
???:?:?: 0x0 in ??? (???)
Aborted (core dumped)

As an added bonus for fixing this bug, you can delete the lines in test/behavior/x86_64/math.zig referencing this issue!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.miscompilationThe compiler reports success but produces semantically incorrect code.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions