hash-org / hashc

The Hash programming language compiler :zap:
https://hash-org.github.io/hashc/
MIT License
26 stars 2 forks source link

Mismatching operand types (pointer to function) causes LLVM crash #1066

Closed feds01 closed 5 months ago

feds01 commented 6 months ago

The following snippet:

math := import("math")

// #dump_ir
main := () => {
    temp := Intrinsics::cast(type f64, type i32, -1.)
    t := math::abs(temp)
}

Causes the compiler to panic when dealing with abs argument with temp

Meta

Backtrace

``` Sorry :^( Internal Compiler Error: Found PointerType(PointerType { ptr_type: Type { address: 0x7fab02816800, llvm_type: "ptr" } }) but expected the FunctionType variant Occurred at '/Users/alex/.cargo/git/checkouts/inkwell-5052cb883294bc1f/58231ba/src/types/enums.rs:289:13' Backtrace for thread "main": 0: backtrace::backtrace::libunwind::trace at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.69/src/backtrace/libunwind.rs:93:5 backtrace::backtrace::trace_unsynchronized at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.69/src/backtrace/mod.rs:66:5 1: backtrace::backtrace::trace at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.69/src/backtrace/mod.rs:53:14 2: backtrace::capture::Backtrace::create at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.69/src/capture.rs:176:9 3: backtrace::capture::Backtrace::new at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.69/src/capture.rs:140:22 4: hash_utils::crash::crash_handler at compiler/hash-utils/src/crash.rs:53:25 5: core::ops::function::Fn::call at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/core/src/ops/function.rs:79:5 6: as core::ops::function::Fn>::call at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/alloc/src/boxed.rs:2032:9 std::panicking::rust_panic_with_hook at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:792:13 7: std::panicking::begin_panic_handler::{{closure}} at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:657:13 8: std::sys_common::backtrace::__rust_end_short_backtrace at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/sys_common/backtrace.rs:171:18 9: rust_begin_unwind at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:645:5 10: core::panicking::panic_fmt at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/core/src/panicking.rs:72:14 11: inkwell::types::enums::AnyTypeEnum::into_function_type at /Users/alex/.cargo/git/checkouts/inkwell-5052cb883294bc1f/58231ba/src/types/enums.rs:289:13 12: hash_codegen_llvm::translation::builder::::call at compiler/hash-codegen-llvm/src/translation/builder.rs:226:23 13: hash_codegen_llvm::translation::builder::::fp_to_int_sat at compiler/hash-codegen-llvm/src/translation/builder.rs:675:9 14: hash_codegen::traits::builder::BlockBuilderMethods::float_to_int_cast at compiler/hash-codegen/src/traits/builder.rs:356:9 15: hash_codegen::lower::rvalue::>::codegen_rvalue_operand at compiler/hash-codegen/src/lower/rvalue.rs:356:25 16: hash_codegen::lower::statement::>::codegen_statement at compiler/hash-codegen/src/lower/statement.rs:24:43 17: hash_codegen::lower::block::>::codegen_block at compiler/hash-codegen/src/lower/block.rs:61:17 18: hash_codegen::lower::codegen_body at compiler/hash-codegen/src/lower/mod.rs:198:9 19: hash_codegen_llvm::LLVMBackend::build_bodies at compiler/hash-codegen-llvm/src/lib.rs:298:13 20: ::run::{{closure}} at compiler/hash-codegen-llvm/src/lib.rs:341:37 21: hash_utils::profiling::HasMutMetrics::record::{{closure}} at compiler/hash-utils/src/profiling.rs:111:16 22: hash_utils::profiling::timed at compiler/hash-utils/src/profiling.rs:130:22 hash_utils::profiling::HasMutMetrics::record at compiler/hash-utils/src/profiling.rs:110:21 23: ::run at compiler/hash-codegen-llvm/src/lib.rs:341:9 24: >::run at compiler/hash-backend/src/lib.rs:68:9 25: hash_driver::driver::Driver::run_stage::{{closure}} at compiler/hash-driver/src/driver.rs:98:16 26: hash_utils::profiling::timed at compiler/hash-utils/src/profiling.rs:130:22 hash_driver::driver::Driver::run_stage at compiler/hash-driver/src/driver.rs:97:9 27: hash_driver::driver::Driver::run_pipeline at compiler/hash-driver/src/driver.rs:159:26 28: hash_driver::driver::Driver::run at compiler/hash-driver/src/driver.rs:248:22 29: hash_driver::driver::Driver::run_filename at compiler/hash-driver/src/driver.rs:271:9 30: hash_driver::driver::Driver::run_on_entry_point at compiler/hash-driver/src/driver.rs:277:32 31: hashc::main at compiler/hash/./src/main.rs:35:5 32: core::ops::function::FnOnce::call_once at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/core/src/ops/function.rs:250:5 33: std::sys_common::backtrace::__rust_begin_short_backtrace at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/sys_common/backtrace.rs:155:18 34: std::rt::lang_start::{{closure}} at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/rt.rs:159:18 35: core::ops::function::impls:: for &F>::call_once at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/core/src/ops/function.rs:284:13 std::panicking::try::do_call at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:552:40 std::panicking::try at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:516:19 std::panic::catch_unwind at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panic.rs:149:14 std::rt::lang_start_internal::{{closure}} at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/rt.rs:141:48 std::panicking::try::do_call at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:552:40 std::panicking::try at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panicking.rs:516:19 std::panic::catch_unwind at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/panic.rs:149:14 std::rt::lang_start_internal at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/rt.rs:141:20 36: std::rt::lang_start at /rustc/1cec373f65eb76e8e4b4d1847213cf3ec6c292b6/library/std/src/rt.rs:158:17 37: _main 38: ```

feds01 commented 6 months ago
main := () => {
   temp := minus_one()
    t := math::abs(temp)
   temp := -1
    t := math::abs(temp)
    t := math::abs(-1)
}

do not trigger the issue

does not crash