Skip to content

LLVM Assertion in autovectorization when compiling with release + overflow-checks since 1.73 #120813

Closed
@DavidBJaffe

Description

@DavidBJaffe

Using Rust 1.76.0 on an Apple M1 Pro with OSX 14.3, using cargo b with opt-level = 3:

fn main() {
    let mut slobber = Vec::<([u8; 52], [u8; 16], usize)>::new();
    slobber.push(([0; 52], [0; 16], 0));
    let mut dels = Vec::<([u8; 16], [u8; 10], i8)>::new();
    let i = 0;
    while i < slobber.len() {
        let j = slobber.len();
        let mut counts = Vec::<(usize, [u8; 16], usize)>::new();
        let mut k = i;
        while k < j {
            let l = slobber.len();
            counts.push((0, [0; 16], 0));
            k = l;
        }
        for u in 1..counts.len() {
            let (b1, b2) = (counts[0].1, counts[u].1);
            let mut diffs = 0;
            for m in 0..16 {
                if b1[m] != b2[m] {
                    diffs += 1;
                }
            }
            if diffs <= 0 {
                dels.push(([0; 16], [0; 10], 0));
            }
        }
    }
}

this happens

mac% cargo b
   Compiling bugsy v0.0.1 (/Users/davidjaffe/repos/infinimmune/bugsy)
error: could not compile `bugsy` (bin "bugsy")

Caused by:
  process didn't exit successfully: `/Users/davidjaffe/.rustup/toolchains/1.76.0-aarch64-apple-darwin/bin/rustc --crate-name bugsy src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=100 --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked -C debug-assertions=on -C metadata=188901b3f11ecd49 -C extra-filename=-188901b3f11ecd49 --out-dir /Users/davidjaffe/repos/infinimmune/bugsy/target/debug/deps -C incremental=/Users/davidjaffe/repos/infinimmune/bugsy/target/debug/incremental -L dependency=/Users/davidjaffe/repos/infinimmune/bugsy/target/debug/deps` (signal: 5, SIGTRAP: trace/breakpoint trap)

The error depends on the optimization level and overflow checking.

Metadata

Metadata

Assignees

Labels

A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.llvm-fixed-upstreamIssue expected to be fixed by the next major LLVM upgrade, or backported fixesregression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions