use wasmer_llvm_backend_tests::{get_compiler, wat2wasm};
use wasmer_runtime::imports;
use wasmer_runtime_core::compile_with;

#[test]
fn crash_return_with_float_on_stack() {
    const MODULE: &str = r#"
(module
  (type (;0;) (func))
  (type (;1;) (func (param f64) (result f64)))
  (func $_start (type 0))
  (func $fmod (type 1) (param f64) (result f64)
    local.get 0
    f64.const 0x0p+0 (;=0;)
    f64.mul
    return)
)
"#;
    let wasm_binary = wat2wasm(MODULE.as_bytes()).expect("WAST not valid or malformed");
    let module = compile_with(&wasm_binary, &get_compiler()).unwrap();
    module.instantiate(&imports! {}).unwrap();
}

#[test]
fn crash_select_with_mismatched_pending() {
    const MODULE: &str = r#"
 (module
  (func (param f64)
    f64.const 0x0p+0 (;=0;)
    local.get 0
    f64.add
    f64.const 0x0p+0 (;=0;)
    i32.const 0
    select
    drop))
"#;
    let wasm_binary = wat2wasm(MODULE.as_bytes()).expect("WAST not valid or malformed");
    let module = compile_with(&wasm_binary, &get_compiler()).unwrap();
    module.instantiate(&imports! {}).unwrap();
}