Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

shrink: Ineffective on non-tree-like expressions (?) #1633

Open
alexcrichton opened this issue Jun 24, 2024 · 0 comments
Open

shrink: Ineffective on non-tree-like expressions (?) #1633

alexcrichton opened this issue Jun 24, 2024 · 0 comments
Labels
wasm-mutate Issues related to the `wasm-mutate` crate

Comments

@alexcrichton
Copy link
Member

I'm not sure why wasm-tools shrink is ineffective here but I wanted to write this down with reproduction instructions before I forgot.

Given this input

foo.wat
(module
  (type (;0;) (func (param f64 f64 f64 f64) (result f32 f64)))
  (func (;0;) (type 0) (param f64 f64 f64 f64) (result f32 f64)
    (local f64 f64 f64 f64 f64 f64 f64 f64 f64 f32 f64 f32 f32 f32 i32 i32 f32 f32 f64 f64 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32 f32)
    global.get 8
    if ;; label = @1
      unreachable
    end
    global.get 8
    global.set 8
    f64.const 0x1.fffffffffffffp+0 (;=1.9999999999999998;)
    local.get 4
    i64.const 0
    f64.const nan (;=NaN;)
    i64.const 0
    local.get 0
    f64.const 0x1.8285b20746e23p-381 (;=0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030655343237919207;)
    i64.const -4850376798678024192
    i32.const 0
    i64.const 0
    f32.const 0x1.a2db4ap+58 (;=471590600000000000;)
    local.get 1
    i32.const 0
    br_if 0
    i32.const 1
    i64.const 0
    global.get 1
    f32.const -0x1.1076bp+48 (;=-299576920000000;)
    local.get 1
    i32.const 0
    if (result f32) ;; label = @1
      global.get 1
      i64.const 0
      local.get 1
      i64.const 0
      i64.extend32_s
      i32.const 1
      if (result f32) ;; label = @2
        f64.const 0x1.fffffffffffffp+0 (;=1.9999999999999998;)
        i32.const 0
        i32.const -1079430155
        i32.or
        if ;; label = @3
        end
        i32.const 0
        if ;; label = @3
        end
        i32.const 1
        if ;; label = @3
        end
        i32.const 1
        i64.const 0
        global.get 1
        block ;; label = @3
          loop (result i32) ;; label = @4
            global.get 8
            if ;; label = @5
              unreachable
            end
            global.get 8
            global.set 8
            global.get 1
            br 1 (;@3;)
            local.set 0
            br 0 (;@4;)
            br 0 (;@4;)
            br 1 (;@3;)
            br 0 (;@4;)
            br 0 (;@4;)
            global.get 3
            local.get 15
            br 0 (;@4;)
            local.tee 17
            local.get 17
            f32.ne
            i32.const 0
            i32.or
            if ;; label = @5
            end
            local.get 17
            f32.const -0x1.fffffep+30 (;=-2147483500;)
            f32.lt
            if ;; label = @5
              nop
            end
            i32.const 1
            if ;; label = @5
            end
            local.set 19
            block ;; label = @5
              block ;; label = @6
                local.get 19
                br_if 0 (;@6;)
                i32.const 1
                br_if 0 (;@6;)
                br 1 (;@5;)
              end
            end
            local.get 18
            block ;; label = @5
              i32.const 1
              i64.const 1
              local.get 2
              i32.const 1
              i32.const 0
              i32.const 0
              local.get 23
              br 1 (;@4;)
              i32.const 0
              i32.const 0
              if (result f32) ;; label = @6
                f64.const 0x1.7c6572cfc0c5ap+420 (;=4023411735552251000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;)
                i32.const -16384
                i32.const 0
                i32.const 0
                global.get 3
                i32.eqz
                global.get 2
                f32.const -nan:0x7fc000 (;=NaN;)
                f32.const -nan:0x7fc000 (;=NaN;)
                f32.const -0x1p+1 (;=-2;)
                f32.const -nan:0x7e0000 (;=NaN;)
                br 1 (;@5;)
                f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                f32.const -nan:0x7e0000 (;=NaN;)
                local.get 1
                i32.const 1353088863
                br_if 1 (;@5;)
                block ;; label = @7
                  local.get 24
                  f32.const -nan:0x7fc000 (;=NaN;)
                  f32.const -nan:0x7fc000 (;=NaN;)
                  f32.const -0x1p+1 (;=-2;)
                  f32.const -nan:0x7e0000 (;=NaN;)
                  br 5 (;@2;)
                  f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                  f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                  f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                  f32.const -nan:0x7e0000 (;=NaN;)
                  local.get 1
                  i32.const 0
                  i32.const 0
                  i32.const 0
                  i64.const 0
                  i32.const 1
                  if (result f32) ;; label = @8
                    i32.const 0
                    i64.const 0
                    br 3 (;@5;)
                    i64.popcnt
                    f64.convert_i64_u
                    f64.neg
                    i32.trunc_sat_f64_u
                    f64.const -0x1.9697261760a3bp+928 (;=-3603737573424275000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;)
                    br 3 (;@5;)
                    i32.const 0
                    i32.extend8_s
                    br 3 (;@5;)
                    i64.const 0
                    br 5 (;@3;)
                    loop (result f64) ;; label = @9
                      global.get 8
                      if ;; label = @10
                        unreachable
                      end
                      i32.const 0
                      global.set 8
                      f32.const 0x1.c2dcbap+89 (;=1090117940000000000000000000;)
                      block ;; label = @10
                        i64.const 1
                        br 5 (;@5;)
                        global.get 0
                        br 3 (;@7;)
                        local.get 1
                        br 6 (;@4;)
                        global.set 0
                        f64.abs
                        f64.abs
                        f64.abs
                        global.set 1
                        br 6 (;@4;)
                        local.get 29
                        i64.const 0
                        local.get 30
                        i64.const 0
                        i32.const 0
                        loop (result f32) ;; label = @11
                          global.get 8
                          if ;; label = @12
                            unreachable
                          end
                          i32.const 0
                          global.set 8
                          i32.const 1
                          if ;; label = @12
                          end
                          f32.const -0x1.4b8638p-52 (;=-0.00000000000000028755149;)
                        end
                        i64.trunc_sat_f32_s
                        i64.const 0
                        i64.le_u
                        i32.gt_s
                        i64.extend_i32_u
                        i64.mul
                        i64.const 0
                        i64.mul
                        i32.const 0
                        local.get 3
                        br 0 (;@10;)
                        i64.trunc_sat_f64_u
                        i64.ctz
                        loop (result i32) ;; label = @11
                          global.get 8
                          if ;; label = @12
                            unreachable
                          end
                          global.get 8
                          global.set 8
                          block ;; label = @12
                            i64.const 0
                            br 9 (;@3;)
                            i64.const 0
                            i64.lt_u
                            i32.ctz
                            i32.clz
                            i32.clz
                            br_if 8 (;@4;)
                            br 9 (;@3;)
                            i64.const 1
                            br 0 (;@12;)
                            i64.popcnt
                            f32.const 0x1.2aa6fap-55 (;=0.000000000000000032379942;)
                            br 10 (;@2;)
                            f64.const -0x1.eae540f9093d5p-883 (;=-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029734657088404895;)
                            br 2 (;@10;)
                            global.set 1
                            br 0 (;@12;)
                            i64.popcnt
                            i64.popcnt
                            i64.popcnt
                            i64.popcnt
                            i64.popcnt
                            i64.eqz
                            i64.const 0
                            local.get 36
                            i64.const 1
                            f32.const 0x0p+0 (;=0;)
                            i64.const 0
                            f32.const 0x1.7dcadep-122 (;=0.0000000000000000000000000000000000002804968;)
                            i32.const 1
                            i32.const -809609695
                            i32.const 0
                            global.get 1
                            i32.const 0
                            br 7 (;@5;)
                            i32.const 25
                            i32.lt_s
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            i32.eqz
                            br_if 0 (;@12;)
                            block ;; label = @13
                              local.get 43
                              f32.const -nan:0x7fc000 (;=NaN;)
                              f32.const -0x1.28f106p-43 (;=-0.00000000000013186852;)
                              f32.const -0x1p+1 (;=-2;)
                              f32.const -nan:0x7e0000 (;=NaN;)
                              br 9 (;@4;)
                              f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                              f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                              f32.const 0x1p-95 (;=0.00000000000000000000000000002524355;)
                              f32.const -nan:0x7e0000 (;=NaN;)
                              local.get 1
                              i32.const 0
                              i32.const 0
                              i32.const 0
                              i64.const 1
                              i32.const 0
                              if (result f32) ;; label = @14
                                i32.const 0
                                i64.const 1
                                br 1 (;@13;)
                                i64.popcnt
                                f64.convert_i64_u
                                f64.neg
                                i32.trunc_sat_f64_u
                                f64.const -0x1.9697261760a3bp+928 (;=-3603737573424275000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;)
                                br 9 (;@5;)
                                i32.const 0
                                br 3 (;@11;)
                                i64.const 1
                                br 10 (;@4;)
                                loop (result f64) ;; label = @15
                                  global.get 8
                                  if ;; label = @16
                                    unreachable
                                  end
                                  global.get 8
                                  global.set 8
                                  f32.const 0x1.c2dcbap+89 (;=1090117940000000000000000000;)
                                  block ;; label = @16
                                    i64.const 0
                                    br 9 (;@7;)
                                    global.get 0
                                    br 13 (;@3;)
                                    local.get 1
                                    br 13 (;@3;)
                                    global.set 0
                                    f64.abs
                                    f64.abs
                                    f64.abs
                                    global.set 1
                                    br 13 (;@3;)
                                    local.get 47
                                    i64.const 0
                                    local.get 49
                                    i64.const 0
                                    i32.const 0
                                    loop (result f32) ;; label = @17
                                      global.get 8
                                      if ;; label = @18
                                        unreachable
                                      end
                                      global.get 8
                                      global.set 8
                                      i32.const 0
                                      if ;; label = @18
                                      end
                                      i64.const 0
                                      f32.convert_i64_u
                                    end
                                    i64.trunc_sat_f32_s
                                    i64.const 1
                                    i64.le_u
                                    i32.gt_s
                                    i64.extend_i32_u
                                    i64.mul
                                    i64.const 1
                                    i64.mul
                                    i32.const 1
                                    block ;; label = @17
                                      block ;; label = @18
                                        global.get 8
                                        if ;; label = @19
                                          unreachable
                                        end
                                        i32.const 1
                                        global.set 8
                                        br 1 (;@17;)
                                      end
                                      block ;; label = @18
                                        block ;; label = @19
                                          global.get 8
                                          if ;; label = @20
                                            unreachable
                                          end
                                          i32.const 0
                                          global.set 8
                                          br 1 (;@18;)
                                        end
                                        block ;; label = @19
                                          block ;; label = @20
                                            global.get 8
                                            if ;; label = @21
                                            else
                                              unreachable
                                            end
                                            i32.const 0
                                            global.set 8
                                            br 1 (;@19;)
                                          end
                                          loop ;; label = @20
                                            global.get 8
                                            if ;; label = @21
                                            else
                                              unreachable
                                            end
                                            i32.const 0
                                            global.set 8
                                          end
                                        end
                                      end
                                    end
                                    global.get 4
                                    i32.xor
                                    global.set 4
                                    global.get 5
                                    i64.xor
                                    global.set 5
                                    i32.reinterpret_f32
                                    global.get 6
                                    i32.xor
                                    global.set 6
                                    global.get 5
                                    i64.xor
                                    global.set 5
                                    i32.reinterpret_f32
                                    global.get 6
                                    i32.xor
                                    global.set 6
                                    global.get 5
                                    i64.xor
                                    global.set 5
                                  end
                                  i32.reinterpret_f32
                                  i32.const 0
                                  i32.xor
                                  global.set 6
                                  f64.const 0x1.e6c616e67786cp+803 (;=101431707399954290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;)
                                end
                                i64.reinterpret_f64
                                global.get 7
                                i64.xor
                                global.set 7
                                global.get 5
                                i64.xor
                                global.set 5
                                global.get 4
                                i32.xor
                                global.set 4
                                i64.reinterpret_f64
                                global.get 7
                                i64.xor
                                global.set 7
                                global.get 4
                                i32.xor
                                global.set 4
                                i32.const 1
                                i32.xor
                                global.set 4
                                f32.const 0x1.ap-145 (;=0.000000000000000000000000000000000000000000036;)
                              else
                                f32.const 0x1.5cc6fp+103 (;=13816484000000000000000000000000;)
                              end
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              global.get 5
                              i64.xor
                              global.set 5
                              global.get 4
                              i32.xor
                              global.set 4
                              global.get 4
                              i32.xor
                              global.set 4
                              global.get 4
                              i32.xor
                              global.set 4
                              i64.reinterpret_f64
                              i64.const 0
                              i64.xor
                              global.set 7
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              i32.const 0
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                              i32.reinterpret_f32
                              global.get 6
                              i32.xor
                              global.set 6
                            end
                            i64.reinterpret_f64
                            global.get 7
                            i64.xor
                            global.set 7
                            global.get 4
                            i32.xor
                            global.set 4
                            global.get 4
                            i32.xor
                            global.set 4
                            global.get 4
                            i32.xor
                            global.set 4
                            i32.reinterpret_f32
                            global.get 6
                            i32.xor
                            global.set 6
                            global.get 5
                            i64.xor
                            global.set 5
                            i32.reinterpret_f32
                            global.get 6
                            i32.xor
                            global.set 6
                            global.get 5
                            i64.xor
                            global.set 5
                            i32.reinterpret_f32
                            global.get 6
                            i32.xor
                            global.set 6
                            global.get 5
                            i64.xor
                            global.set 5
                            global.get 4
                            i32.xor
                            global.set 4
                          end
                          i32.const 0
                        end
                        global.get 4
                        i32.xor
                        global.set 4
                        global.get 5
                        i64.xor
                        global.set 5
                        i32.const 0
                        i32.xor
                        global.set 4
                        global.get 5
                        i64.xor
                        global.set 5
                        i32.reinterpret_f32
                        global.get 6
                        i32.xor
                        global.set 6
                        global.get 5
                        i64.xor
                        global.set 5
                        i32.reinterpret_f32
                        global.get 6
                        i32.xor
                        global.set 6
                        global.get 5
                        i64.xor
                        global.set 5
                      end
                      i32.reinterpret_f32
                      global.get 6
                      i32.xor
                      global.set 6
                      f64.const 0x1.10a20310a2031p-508 (;=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001270867974337706;)
                    end
                    i64.reinterpret_f64
                    global.get 7
                    i64.xor
                    global.set 7
                    global.get 5
                    i64.xor
                    global.set 5
                    global.get 4
                    i32.xor
                    global.set 4
                    i64.reinterpret_f64
                    global.get 7
                    i64.xor
                    global.set 7
                    global.get 4
                    i32.xor
                    global.set 4
                    i32.const 0
                    i32.xor
                    global.set 4
                    f32.const 0x1.p-135 (;=0.000000000000000000000000000000000000000022959;)
                  else
                    f32.const 0x1.144062p-29 (;=0.0000000020099942;)
                  end
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  global.get 5
                  i64.xor
                  global.set 5
                  global.get 4
                  i32.xor
                  global.set 4
                  global.get 4
                  i32.xor
                  global.set 4
                  global.get 4
                  i32.xor
                  global.set 4
                  i64.reinterpret_f64
                  global.get 7
                  i64.xor
                  global.set 7
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                  i32.reinterpret_f32
                  global.get 6
                  i32.xor
                  global.set 6
                end
                i64.reinterpret_f64
                global.get 7
                i64.xor
                global.set 7
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                i32.const 1
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                i32.reinterpret_f32
                global.get 6
                i32.xor
                global.set 6
                global.get 4
                i32.xor
                global.set 4
                global.get 4
                i32.xor
                global.set 4
                global.get 4
                i32.xor
                global.set 4
                global.get 4
                i32.xor
                global.set 4
                i64.reinterpret_f64
                global.get 7
                i64.xor
                global.set 7
                f32.const 0x1.0c1ccp+0 (;=1.0473137;)
              else
                f32.const 0x1.406214p-107 (;=0.000000000000000000000000000000007712943;)
              end
              i32.reinterpret_f32
              global.get 6
              i32.xor
              global.set 6
              i32.const 0
              i32.xor
              global.set 4
              i64.reinterpret_f64
              global.get 7
              i64.xor
              global.set 7
              global.get 4
              i32.xor
              global.set 4
              global.get 4
              i32.xor
              global.set 4
              i32.const 1
              i32.xor
              global.set 4
              i64.reinterpret_f64
              global.get 7
              i64.xor
              global.set 7
              global.get 5
              i64.xor
              global.set 5
              global.get 4
              i32.xor
              global.set 4
            end
          end
          global.get 4
          i32.xor
          global.set 4
        end
        i64.reinterpret_f64
        global.get 7
        i64.xor
        global.set 7
        global.get 5
        i64.xor
        global.set 5
        global.get 4
        i32.xor
        global.set 4
        i64.reinterpret_f64
        global.get 7
        i64.xor
        global.set 7
        f32.const 0x1.p-135 (;=0.000000000000000000000000000000000000000022959;)
      else
        f32.const 0x1.144062p-29 (;=0.0000000020099942;)
      end
      i32.reinterpret_f32
      global.get 6
      i32.xor
      global.set 6
      global.get 5
      i64.xor
      global.set 5
      i64.reinterpret_f64
      global.get 7
      i64.xor
      global.set 7
      i64.const 0
      i64.xor
      global.set 5
      i64.reinterpret_f64
      global.get 7
      i64.xor
      global.set 7
      f32.const 0x1.p-135 (;=0.000000000000000000000000000000000000000022959;)
    else
      f32.const 0x1.144062p-29 (;=0.0000000020099942;)
    end
    i32.reinterpret_f32
    i32.const 0
    i32.xor
    global.set 6
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    i32.reinterpret_f32
    global.get 6
    i32.xor
    global.set 6
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    global.get 5
    i64.xor
    global.set 5
    global.get 4
    i32.xor
    global.set 4
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    i32.reinterpret_f32
    global.get 6
    i32.xor
    global.set 6
    global.get 5
    i64.xor
    global.set 5
    global.get 4
    i32.xor
    global.set 4
    global.get 5
    i64.xor
    global.set 5
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    i64.const 0
    i64.xor
    global.set 5
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    global.get 5
    i64.xor
    global.set 5
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    i64.reinterpret_f64
    global.get 7
    i64.xor
    global.set 7
    f32.const 0x1.p-135 (;=0.000000000000000000000000000000000000000022959;)
    f64.const 0x1.10a20310a2031p-508 (;=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001270867974337706;)
  )
  (global (;0;) (mut f64) f64.const -0x1.9898989898989p-875 (;=-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006335895749884723;))
  (global (;1;) (mut f64) f64.const -0x1.9898989898989p-876 (;=-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031679478749423613;))
  (global (;2;) (mut f32) f32.const 0x0p+0 (;=0;))
  (global (;3;) i32 i32.const 0)
  (global (;4;) (mut i32) i32.const 0)
  (global (;5;) (mut i64) i64.const 0)
  (global (;6;) (mut i32) i32.const 0)
  (global (;7;) (mut i64) i64.const 0)
  (global (;8;) (mut i32) i32.const 0)
)

and this script:

#!/bin/sh

$HOME/code/wasmtime/target/debug/wasmtime \
  compile -C compiler=winch -o /dev/null \
  --target x86_64 \
  $1 2>&1 | grep panic

and using Wasmtime at bytecodealliance/wasmtime@7112d93 (make sure to build Wasmtime with debug assertions on)

then this invocation:

$ cargo run --release shrink ./test.sh ./foo.wat

Is not effectively shrinking the module any further. A fully shrunk module should look something like bytecodealliance/wasmtime#8848 but the main function body here is significantly larger than it is in the issue. I tried to figure out why wasm-mutate wasn't performing expected mutations here but I couldn't figure it out. It seemed like it might be related to "Basic block cannot be constructed for opcode" but I didn't dig too too far as I don't understand wasm-mutate well enough.

@alexcrichton alexcrichton added the wasm-mutate Issues related to the `wasm-mutate` crate label Jun 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wasm-mutate Issues related to the `wasm-mutate` crate
Projects
None yet
Development

No branches or pull requests

1 participant