Skip to content

Compiler segfault/infinite loop when @splat used with scalar type #16567

@Pyrolistical

Description

@Pyrolistical

Zig Version

0.11.0-dev.4246+71dfce31b

Steps to Reproduce and Observed Behavior

Env:

$ sw_vers
ProductName:            macOS
ProductVersion:         13.4
BuildVersion:           22F66

$ uname -a
Darwin My-MacBook-Air.local 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:53:44 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8103 arm64

Given repo.zig

pub fn main() void {
    const segfaults: u8 = @splat(0);
    _ = segfaults;
}

Run zig build-exe repo.zig

Sometimes it segfaults, sometimes bus error, sometimes works correctly, sometimes goes into infinite loop:

$ zig build-exe repo.zig
zsh: segmentation fault  zig build-exe repo.zig
$ zig build-exe repo.zig
zsh: bus error  zig build-exe repo.zig
$ zig build-exe repo.zig
repo2.zig:2:27: error: expected vector type, found 'u8'
    const segfaults: u8 = @splat(0);
                          ^~~~~~~~~
referenced by:
    callMain: zig/lib/std/start.zig:598:17
    initEventLoopAndCallMain: zig/lib/std/start.zig:542:34
    remaining reference traces hidden; use '-freference-trace' to see all reference traces
$ zig build-exe repo.zig
^C

Expected Behavior

Compiler error:

$ zig build-exe repo.zig
repo2.zig:2:27: error: expected vector type, found 'u8'
    const segfaults: u8 = @splat(0);
                          ^~~~~~~~~
referenced by:
    callMain: zig/lib/std/start.zig:598:17
    initEventLoopAndCallMain: zig/lib/std/start.zig:542:34
    remaining reference traces hidden; use '-freference-trace' to see all reference traces

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions