WebAssembly / WebAssembly/binaryen

I64ToI32Lowering fails on i64.trunc_sat_f64_s

Open
#2,198 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
WebAssembly
Stars
8.6k
Forks
885
Avg merge
1d 19h
Merged PRs (30d)
69

Description

Testcase: run bin/wasm-opt --flatten --i64-to-i32-lowering --all-features on

(module
 (func $trunc_sat_f64_s (result i64)
  (drop
   (block $label$1 (result i32)
    (drop
     (block $label$2 (result i32)
      (drop
       (i64.trunc_sat_f64_s
        (f64.const -nan:0xfffff9a702f19)
       )
      )
      (i32.const 1)
     )
    )
    (i32.const 0)
   )
  )
  (unreachable)
 )
)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the provided module using bin/wasm-opt --flatten --i64-to-i32-lowering --all-features. Start by tracing the i64-to-i32 lowering pass's handling of i64.trunc_sat_f64_s and its nested blocks. Done means the command handles this testcase without failing and preserves valid output.

Written by the indexing model from the issue text.

Assessment

Tech stack
wasm
Domain
compilers
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.