alexcrichton opened issue #12399:
This input:
;; Run test case test interpret test run set opt_level=speed_and_size set bb_padding_log2_minus_one=6 set enable_alias_analysis=false set enable_nan_canonicalization=true set enable_llvm_abi_extensions=true set enable_multi_ret_implicit_sret=true set unwind_info=false set machine_code_cfg_info=true set enable_heap_access_spectre_mitigation=false set enable_table_access_spectre_mitigation=false target x86_64 has_sse3 has_ssse3 has_cmpxchg16b has_sse41 has_sse42 has_avx has_avx2 has_fma has_popcnt has_bmi1 has_bmi2 has_lzcnt function %my_f(i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext) -> i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext preserve_all { sig0 = (f32) -> f32 system_v sig1 = (f64) -> f64 system_v sig2 = (f32) -> f32 system_v sig3 = (f64) -> f64 system_v sig4 = (f32) -> f32 system_v sig5 = (f64) -> f64 system_v fn0 = %CeilF32 sig0 fn1 = %CeilF64 sig1 fn2 = %FloorF32 sig2 fn3 = %FloorF64 sig3 fn4 = %TruncF32 sig4 fn5 = %TruncF64 sig5 block0(v0: i8, v1: i8, v2: i8, v3: i8, v4: i8, v5: i8, v6: i8, v7: i8, v8: i8, v9: i8, v10: i8, v11: i8, v12: i8, v13: i8, v14: i8): v15 = iconst.i8 0 v16 = iconst.i16 0 v17 = iconst.i32 0 v18 = iconst.i64 0 v19 = uextend.i128 v18 ; v18 = 0 return v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0 } ; Note: the results in the below test cases are simply a placeholder and probably will be wrong ; run: %my_f(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]fails with:
$ cargo run test ../foo.clif Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s Running `/home/alex/code/wasmtime/target/debug/clif-util test ../foo.clif` thread 'worker #9' (2412184) panicked at cranelift/codegen/src/machinst/abi.rs:2504:9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace [2026-01-23T02:40:53Z ERROR cranelift_filetests::concurrent] FAIL: panicked in worker #9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) FAIL ../foo.clif: panicked in worker #9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) 1 tests Error: 1 failurecc @cfallin, bisection points to #12160
alexcrichton added the fuzz-bug label to Issue #12399.
alexcrichton commented on issue #12399:
Another longer, probably duplicate, but separate oss-fuzz bug:
<details>
test compile set opt_level=speed_and_size set bb_padding_log2_minus_one=6 set enable_alias_analysis=false set enable_nan_canonicalization=true set enable_multi_ret_implicit_sret=true set unwind_info=false set machine_code_cfg_info=true set enable_heap_access_spectre_mitigation=false set enable_table_access_spectre_mitigation=false target riscv64 has_zfhmin has_zfh has_zcb has_zbs has_zicond has_zvl2048b has_zvl4096b has_zvl8192b has_zvl16384b has_zvl65536b function u1:0(f64, i128, i128, i128, f64) -> i128, i128, i128, i128, i128 fast { sig0 = (f64, f64, f64) -> f64 preserve_all sig1 = (f32) -> f32 system_v sig2 = (f64) -> f64 system_v sig3 = (f32) -> f32 system_v sig4 = (f64) -> f64 system_v sig5 = (f32) -> f32 system_v sig6 = (f64) -> f64 system_v sig7 = (f32) -> f32 system_v sig8 = (f64) -> f64 system_v sig9 = (f32, f32, f32) -> f32 system_v sig10 = (f64, f64, f64) -> f64 system_v fn0 = u2:0 sig0 fn1 = %CeilF32 sig1 fn2 = %CeilF64 sig2 fn3 = %FloorF32 sig3 fn4 = %FloorF64 sig4 fn5 = %TruncF32 sig5 fn6 = %TruncF64 sig6 fn7 = %NearestF32 sig7 fn8 = %NearestF64 sig8 fn9 = %FmaF32 sig9 fn10 = %FmaF64 sig10 block0(v0: f64, v1: i128, v2: i128, v3: i128, v4: f64): v5 = iconst.i8 0 v6 = iconst.i16 0 v7 = iconst.i32 0 v8 = iconst.i64 0 v9 = uextend.i128 v8 ; v8 = 0 v10 = call fn0(v0, v0, v0) v11 = call fn0(v10, v10, v10) v12 = call fn0(v11, v11, v11) v13 = call fn0(v12, v12, v12) v14 = call fn0(v13, v13, v13) v15 = call fn0(v14, v14, v14) v16 = call fn0(v15, v15, v15) v17 = call fn0(v16, v16, v16) v18 = call fn0(v17, v17, v17) v19 = call fn0(v18, v18, v18) v20 = call fn0(v19, v19, v19) v21 = call fn0(v20, v20, v20) v22 = call fn0(v21, v21, v21) v23 = call fn0(v22, v22, v22) v24 = call fn0(v23, v23, v23) v25 = call fn0(v24, v24, v24) v26 = call fn0(v25, v25, v25) v27 = call fn0(v26, v26, v26) v28 = call fn0(v27, v27, v27) v29 = call fn0(v28, v28, v28) v30 = call fn0(v29, v29, v29) v31 = call fn0(v30, v30, v30) v32 = call fn0(v31, v31, v31) v33 = call fn0(v32, v32, v32) v34 = call fn0(v33, v33, v33) v35 = call fn0(v34, v34, v34) v36 = call fn0(v35, v35, v35) v37 = call fn0(v36, v36, v36) v38 = call fn0(v37, v37, v37) v39 = call fn0(v38, v38, v38) v40 = call fn0(v39, v39, v39) v41 = call fn0(v40, v40, v40) return v1, v1, v1, v1, v1 }</details>
cfallin commented on issue #12399:
Ran out of time today but acknowledging this bug report and I'll try to get to it Monday. Thanks!
cfallin assigned cfallin to issue #12399.
cfallin closed issue #12399:
This input:
;; Run test case test interpret test run set opt_level=speed_and_size set bb_padding_log2_minus_one=6 set enable_alias_analysis=false set enable_nan_canonicalization=true set enable_llvm_abi_extensions=true set enable_multi_ret_implicit_sret=true set unwind_info=false set machine_code_cfg_info=true set enable_heap_access_spectre_mitigation=false set enable_table_access_spectre_mitigation=false target x86_64 has_sse3 has_ssse3 has_cmpxchg16b has_sse41 has_sse42 has_avx has_avx2 has_fma has_popcnt has_bmi1 has_bmi2 has_lzcnt function %my_f(i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext) -> i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext, i8 sext preserve_all { sig0 = (f32) -> f32 system_v sig1 = (f64) -> f64 system_v sig2 = (f32) -> f32 system_v sig3 = (f64) -> f64 system_v sig4 = (f32) -> f32 system_v sig5 = (f64) -> f64 system_v fn0 = %CeilF32 sig0 fn1 = %CeilF64 sig1 fn2 = %FloorF32 sig2 fn3 = %FloorF64 sig3 fn4 = %TruncF32 sig4 fn5 = %TruncF64 sig5 block0(v0: i8, v1: i8, v2: i8, v3: i8, v4: i8, v5: i8, v6: i8, v7: i8, v8: i8, v9: i8, v10: i8, v11: i8, v12: i8, v13: i8, v14: i8): v15 = iconst.i8 0 v16 = iconst.i16 0 v17 = iconst.i32 0 v18 = iconst.i64 0 v19 = uextend.i128 v18 ; v18 = 0 return v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0, v0 } ; Note: the results in the below test cases are simply a placeholder and probably will be wrong ; run: %my_f(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]fails with:
$ cargo run test ../foo.clif Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s Running `/home/alex/code/wasmtime/target/debug/clif-util test ../foo.clif` thread 'worker #9' (2412184) panicked at cranelift/codegen/src/machinst/abi.rs:2504:9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace [2026-01-23T02:40:53Z ERROR cranelift_filetests::concurrent] FAIL: panicked in worker #9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) FAIL ../foo.clif: panicked in worker #9: assertion failed: self.defs.is_empty() || M::get_regs_clobbered_by_call(self.callee_conv, self.try_call_info.is_some()).contains(PReg::from(temp.to_reg().to_real_reg().unwrap())) 1 tests Error: 1 failurecc @cfallin, bisection points to #12160
Last updated: Jan 29 2026 at 13:25 UTC