Skip to content

Cranelift: look into removing redundant SSA parameters #1097

@lars-t-hansen

Description

@lars-t-hansen

@sunfishcode, we were discussing redundant SSA parameters. Here's a simple example. It's possible that the return block is a special case and that this is not what you were thinking about when you said redundant parameters should not occur.

Using the SpiderMonkey embedding here. Wat source:

(module
  (func (export "f") (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32)
    (i32.div_s (local.get 5) (local.get 1))))

IR code:

$ RUST_LOG=debug dist/bin/js --wasm-compiler=cranelift ~/moz/manyparam.js
...
function u0:0(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 vmctx) -> i32 uext baldrdash {
                                ebb0(v0: i32, v1: i32, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32, v7: i32, v8: i32, v9: i32, v10: i64):
@0041                               v12 = sdiv v5, v1
@0042                               jump ebb1(v12)

                                ebb1(v11: i32):
@0042                               fallthrough_return v11
}

(Will look for additional examples.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    craneliftIssues related to the Cranelift code generatorenhancement

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions