Skip to content

AVR: Cannot compile compiler_builtins in either release or debug mode with nightly 2021-08-21 #88252

Closed
@gergoerdi

Description

@gergoerdi

Compiling a pretty much empty project for AVR brings in compiler_builtins as a dependency, but then building that fails with a segfault (with --release) or a a ran out of registers during register allocation error message.

To reproduce, make the following files:

Cargo.toml

[package]
name = "foo"
version = "0.1.0"

.cargo/config

[build]
target = "avr-unknown-gnu-atmega328"

[unstable]
build-std = ["core"]

src/main.rs

#![no_std]
#![no_main]

#[no_mangle]
pub extern fn main() {
}

Build logs:

$ cargo build 
   Compiling core v0.0.0 (/home/cactus/sdk/rust/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.49
   Compiling rustc-std-workspace-core v1.99.0 (rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
error: ran out of registers during register allocation

error: could not compile `core` due to previous error
warning: build failed, waiting for other jobs to finish...
error: build failed
$ cargo build --release
   Compiling compiler_builtins v0.1.49
   Compiling core v0.0.0 (rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x4ffee3)[0x7f4b5705dee3]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x141f0)[0x7f4b567be1f0]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm12MachineInstr15addRegisterDeadENS_8RegisterEPKNS_18TargetRegisterInfoEb+0xe1)[0x7f4b536eb021]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm13LiveIntervals17computeDeadValuesERNS_12LiveIntervalEPNS_15SmallVectorImplIPNS_12MachineInstrEEE+0x2ab)[0x7f4b5363bd1b]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm13LiveIntervals12shrinkToUsesEPNS_12LiveIntervalEPNS_15SmallVectorImplIPNS_12MachineInstrEEE+0x492)[0x7f4b5363d242]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm13LiveRangeEdit17eliminateDeadDefsERNS_15SmallVectorImplIPNS_12MachineInstrEEENS_8ArrayRefINS_8RegisterEEEPNS_9AAResultsE+0x20a)[0x7f4b5365811a]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(+0x25af0f2)[0x7f4b536090f2]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm12RegAllocBase16postOptimizationEv+0x17)[0x7f4b5382adf7]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(+0x27e04ca)[0x7f4b5383a4ca]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE+0xee)[0x7f4b536dcfde]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x639)[0x7f4b53479429]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x33)[0x7f4b534803e3]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.56.0-nightly.so(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x470)[0x7f4b53479c90]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x2129268)[0x7f4b58c87268]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x20b004f)[0x7f4b58c0e04f]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x20b2f70)[0x7f4b58c10f70]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x20be46b)[0x7f4b58c1c46b]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x20b7d84)[0x7f4b58c15d84]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x20f9d3c)[0x7f4b58c57d3c]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f66b15f11dec651a.so(+0x211631c)[0x7f4b58c7431c]
rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/libstd-1dd6c19f0820d51d.so(rust_metadata_std_155e9b00b45252a2+0xa9fe3)[0x7f4b5689bfe3]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x9450)[0x7f4b567b3450]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7f4b566c1d53]
error: could not compile `compiler_builtins`

Caused by:
  process didn't exit successfully: `rustc --crate-name compiler_builtins .cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.49/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --cfg 'feature="compiler-builtins"' --cfg 'feature="core"' --cfg 'feature="default"' --cfg 'feature="rustc-dep-of-std"' -C metadata=35ae16dbb58b86b3 -C extra-filename=-35ae16dbb58b86b3 --out-dir prog/rust/avr/compiler-builtins-bug/target/avr-unknown-gnu-atmega328/release/deps --target avr-unknown-gnu-atmega328 -Z force-unstable-if-unmarked -L dependency=prog/rust/avr/compiler-builtins-bug/target/avr-unknown-gnu-atmega328/release/deps -L dependency=prog/rust/avr/compiler-builtins-bug/target/release/deps --extern core=prog/rust/avr/compiler-builtins-bug/target/avr-unknown-gnu-atmega328/release/deps/librustc_std_workspace_core-feaa69e1bf1370b5.rmeta --cap-lints allow --cfg 'feature="unstable"'` (signal: 11, SIGSEGV: invalid memory reference)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.O-AVRTarget: AVR processors (ATtiny, ATmega, etc.)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions