Skip to content

ICE: autodiff: invalid args #150330

@matthiaskrgr

Description

@matthiaskrgr

snippet:

//@compile-flags: -Zincremental-verify-ich=yes -Cincremental=<dir> -Cdebuginfo=2 -Clink-dead-code=true -Zvalidate-mir -Zquery-dep-graph -Zthreads=4 --edition=2024
#![feature(autodiff)]
macro_rules! demo {
    () => {
        #[std::autodiff::autodiff_reverse(x, Active, Active)]
        fn f(x: f64) -> f64 {
            x
        }
    };
}
demo!();

pub fn main() {}

Version information

rustc 1.94.0-nightly (2ca7bcd03 2025-12-23)
binary: rustc
commit-hash: 2ca7bcd03b87b52f7055a59b817443b0ac4a530d
commit-date: 2025-12-23
host: x86_64-unknown-linux-gnu
release: 1.94.0-nightly
LLVM version: 21.1.8

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zincremental-verify-ich=yes -Cincremental=<dir> -Cdebuginfo=2 -Clink-dead-code=true -Zvalidate-mir -Zquery-dep-graph -Zthreads=4 --edition=2024

Program output

warning: function `f` is never used
  --> /tmp/icemaker_global_tempdir.4K5QMhZtihrW/rustc_testrunner_tmpdir_reporting.eu9lK8vGklo3/mvce.rs:5:12
   |
 5 |         fn f(x: f64) -> f64 {
   |            ^
...
10 | demo!();
   | ------- in this macro invocation
   |
   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
   = note: this warning originates in the macro `demo` (in Nightly builds, run with -Z macro-backtrace for more info)

error: using the autodiff feature requires -Z autodiff=Enable

error: using the autodiff feature requires setting `lto="fat"` in your Cargo.toml

error: internal compiler error: /rustc-dev/2ca7bcd03b87b52f7055a59b817443b0ac4a530d/compiler/rustc_codegen_llvm/src/intrinsic.rs:1211:14: invalid args


thread 'rustc' (3569175) panicked at /rustc-dev/2ca7bcd03b87b52f7055a59b817443b0ac4a530d/compiler/rustc_codegen_llvm/src/intrinsic.rs:1211:14:
Box<dyn Any>
stack backtrace:
   0:     0x7f934f22c3a3 - <<std[243ef3771c46e43a]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c088ff38143eb53e]::fmt::Display>::fmt
   1:     0x7f934f810648 - core[c088ff38143eb53e]::fmt::write
   2:     0x7f934f242af6 - <std[243ef3771c46e43a]::sys::stdio::unix::Stderr as std[243ef3771c46e43a]::io::Write>::write_fmt
   3:     0x7f934f202b48 - std[243ef3771c46e43a]::panicking::default_hook::{closure#0}
   4:     0x7f934f220213 - std[243ef3771c46e43a]::panicking::default_hook
   5:     0x7f934e210d77 - std[243ef3771c46e43a]::panicking::update_hook::<alloc[baa86124b2c3e6f2]::boxed::Box<rustc_driver_impl[e986b619aabff65e]::install_ice_hook::{closure#1}>>::{closure#0}
   6:     0x7f934f2204f2 - std[243ef3771c46e43a]::panicking::panic_with_hook
   7:     0x7f934e24dec1 - std[243ef3771c46e43a]::panicking::begin_panic::<rustc_errors[c64784b3ec03c9d3]::ExplicitBug>::{closure#0}
   8:     0x7f934e23e166 - std[243ef3771c46e43a]::sys::backtrace::__rust_end_short_backtrace::<std[243ef3771c46e43a]::panicking::begin_panic<rustc_errors[c64784b3ec03c9d3]::ExplicitBug>::{closure#0}, !>
   9:     0x7f934e23b7a9 - std[243ef3771c46e43a]::panicking::begin_panic::<rustc_errors[c64784b3ec03c9d3]::ExplicitBug>
  10:     0x7f934e26beb1 - <rustc_errors[c64784b3ec03c9d3]::diagnostic::BugAbort as rustc_errors[c64784b3ec03c9d3]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  11:     0x7f934e80d2e9 - rustc_middle[395a2484b1db1a27]::util::bug::opt_span_bug_fmt::<rustc_span[f0a4c422aa13deb9]::span_encoding::Span>::{closure#0}
  12:     0x7f934e80d472 - rustc_middle[395a2484b1db1a27]::ty::context::tls::with_opt::<rustc_middle[395a2484b1db1a27]::util::bug::opt_span_bug_fmt<rustc_span[f0a4c422aa13deb9]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  13:     0x7f934e7fe77b - rustc_middle[395a2484b1db1a27]::ty::context::tls::with_context_opt::<rustc_middle[395a2484b1db1a27]::ty::context::tls::with_opt<rustc_middle[395a2484b1db1a27]::util::bug::opt_span_bug_fmt<rustc_span[f0a4c422aa13deb9]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  14:     0x7f934cc1a5b4 - rustc_middle[395a2484b1db1a27]::util::bug::bug_fmt
  15:     0x7f934e02095b - rustc_codegen_llvm[988cdf03c4cb321]::intrinsic::codegen_autodiff
  16:     0x7f9350940442 - <rustc_codegen_llvm[988cdf03c4cb321]::builder::GenericBuilder<rustc_codegen_llvm[988cdf03c4cb321]::context::FullCx> as rustc_codegen_ssa[21f8591ee52006ec]::traits::intrinsic::IntrinsicCallBuilderMethods>::codegen_intrinsic_call
  17:     0x7f9350941cad - <rustc_codegen_ssa[21f8591ee52006ec]::mir::FunctionCx<rustc_codegen_llvm[988cdf03c4cb321]::builder::GenericBuilder<rustc_codegen_llvm[988cdf03c4cb321]::context::FullCx>>>::codegen_intrinsic_call
  18:     0x7f9350cab46a - rustc_codegen_ssa[21f8591ee52006ec]::mir::codegen_mir::<rustc_codegen_llvm[988cdf03c4cb321]::builder::GenericBuilder<rustc_codegen_llvm[988cdf03c4cb321]::context::FullCx>>
  19:     0x7f934fbca383 - rustc_codegen_llvm[988cdf03c4cb321]::base::compile_codegen_unit::module_codegen
  20:     0x7f9350bda704 - <rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend as rustc_codegen_ssa[21f8591ee52006ec]::traits::backend::ExtraBackendMethods>::compile_codegen_unit
  21:     0x7f934dfeecad - rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec::<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>
  22:     0x7f934e0022ca - rustc_thread_pool[7f17bb90507950fa]::join::join_context::<rustc_thread_pool[7f17bb90507950fa]::join::join::call<(), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>::{closure#1}>::{closure#0}, rustc_thread_pool[7f17bb90507950fa]::join::join::call<(), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>::{closure#2}>::{closure#0}, (), ()>::{closure#0}
  23:     0x7f934dfeed61 - rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec::<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>
  24:     0x7f934e03ef15 - <rustc_thread_pool[7f17bb90507950fa]::job::StackJob<rustc_thread_pool[7f17bb90507950fa]::latch::SpinLatch, rustc_thread_pool[7f17bb90507950fa]::join::join_context<rustc_thread_pool[7f17bb90507950fa]::join::join::call<(), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>::{closure#1}>::{closure#0}, rustc_thread_pool[7f17bb90507950fa]::join::join::call<(), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_slice::par_rec<(core[c088ff38143eb53e]::option::Option<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, core[c088ff38143eb53e]::option::Option<(usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>)>), rustc_data_structures[75601f20e3d68749]::sync::parallel::par_map<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse), alloc[baa86124b2c3e6f2]::vec::Vec<(usize, &rustc_codegen_ssa[21f8591ee52006ec]::assert_module_sources::CguReuse)>, (usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>), std[243ef3771c46e43a]::collections::hash::map::HashMap<usize, rustc_data_structures[75601f20e3d68749]::marker::IntoDynSyncSend<(rustc_codegen_ssa[21f8591ee52006ec]::ModuleCodegen<rustc_codegen_llvm[988cdf03c4cb321]::ModuleLlvm>, u64)>, rustc_hash[1d1c167f5c76c9f8]::FxBuildHasher>, rustc_codegen_ssa[21f8591ee52006ec]::base::codegen_crate<rustc_codegen_llvm[988cdf03c4cb321]::LlvmCodegenBackend>::{closure#5}::{closure#1}>::{closure#0}::{closure#1}>::{closure#2}>::{closure#0}, (), ()>::{closure#0}::{closure#0}, ()> as rustc_thread_pool[7f17bb90507950fa]::job::Job>::execute
  25:     0x7f934ef15f4f - <rustc_thread_pool[7f17bb90507950fa]::registry::WorkerThread>::wait_or_steal_until_cold
  26:     0x7f934ef14962 - <rustc_thread_pool[7f17bb90507950fa]::registry::ThreadBuilder>::run
  27:     0x7f934e209b8c - std[243ef3771c46e43a]::sys::backtrace::__rust_begin_short_backtrace::<<rustc_thread_pool[7f17bb90507950fa]::ThreadPoolBuilder>::build_scoped<rustc_interface[577997324878ea43]::util::run_in_thread_pool_with_globals<rustc_interface[577997324878ea43]::interface::run_compiler<(), rustc_driver_impl[e986b619aabff65e]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#5}::{closure#0}::{closure#0}, rustc_interface[577997324878ea43]::util::run_in_thread_pool_with_globals<rustc_interface[577997324878ea43]::interface::run_compiler<(), rustc_driver_impl[e986b619aabff65e]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#5}::{closure#0}::{closure#1}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
  28:     0x7f934e2157f3 - <std[243ef3771c46e43a]::thread::lifecycle::spawn_unchecked<<rustc_thread_pool[7f17bb90507950fa]::ThreadPoolBuilder>::build_scoped<rustc_interface[577997324878ea43]::util::run_in_thread_pool_with_globals<rustc_interface[577997324878ea43]::interface::run_compiler<(), rustc_driver_impl[e986b619aabff65e]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#5}::{closure#0}::{closure#0}, rustc_interface[577997324878ea43]::util::run_in_thread_pool_with_globals<rustc_interface[577997324878ea43]::interface::run_compiler<(), rustc_driver_impl[e986b619aabff65e]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#5}::{closure#0}::{closure#1}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>::{closure#1} as core[c088ff38143eb53e]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  29:     0x7f9350995b38 - <std[243ef3771c46e43a]::sys::thread::unix::Thread>::new::thread_start
  30:     0x7f934a29698b - <unknown>
  31:     0x7f934a31a9cc - <unknown>
  32:                0x0 - <unknown>

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: rustc 1.94.0-nightly (2ca7bcd03 2025-12-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z incremental-verify-ich=yes -C incremental=[REDACTED] -C debuginfo=2 -C link-dead-code=true -Z validate-mir -Z query-dep-graph -Z threads=4

query stack during panic:
end of query stack
error: aborting due to 3 previous errors; 1 warning emitted


@rustbot label +F-autodiff +-Zvalidate-mir

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.F-autodiff`#![feature(autodiff)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️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