Skip to content

cannot guarantee tail call due to mismatched parameter counts #144755

@matthiaskrgr

Description

@matthiaskrgr

I tried this code:

//@ check-pass
// so this should compile.
#![expect(incomplete_features)]
#![feature(explicit_tail_calls)]

fn a(x: u32) -> u32 {
    become b(x);
}

#[track_caller]
fn b(x: u32) -> u32 { x + 42 }

fn main() {
    assert_eq!(a(128), 54);
}

Meta

rustc --version --verbose:

adcb3d3b4cd3b7c4cde642f3ed537037f293738e
Backtrace

cannot guarantee tail call due to mismatched parameter counts
  %2 = musttail call i32 @_ZN64FF3C930F77C71A201CC3F60E04A19F24F40C416034B4A3B4054609ACB4023FA01b17h0731788d0a0410ebE(i32 %0, ptr align 8 @2)
rustc-LLVM ERROR: Broken module found, compilation aborted!

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.F-explicit_tail_calls`#![feature(explicit_tail_calls)]`I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.requires-debug-assertionsThis issue requires a build of rustc or tooling with debug-assertions in some way

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions