|
| 1 | +;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. |
| 2 | + |
| 3 | +;; RUN: foreach %s %t wasm-opt --inlining-optimizing --optimize-level=3 --skip-pass=coalesce-locals -S -o - 2>&1 | filecheck %s |
| 4 | + |
| 5 | +;; We should skip coalese-locals when it is run as an internal sub-pass. Here |
| 6 | +;; we inline and optimize afterwards, which normally runs the full set of |
| 7 | +;; function passes, but skip pass skips it even there. |
| 8 | + |
| 9 | +(module |
| 10 | + ;; CHECK: (import "a" "b" (func $log (param i32 i32))) |
| 11 | + (import "a" "b" (func $log (param i32 i32))) |
| 12 | + |
| 13 | + (func $foo (param $p i32) |
| 14 | + ;; The locals $x and $y can be coalesced into a single local, but as we do not |
| 15 | + ;; run that pass, they will not be. Other minor optimizations will occur here, |
| 16 | + ;; such as using a tee. |
| 17 | + (local $x i32) |
| 18 | + (local $y i32) |
| 19 | + |
| 20 | + (local.set $x |
| 21 | + (i32.add |
| 22 | + (local.get $p) |
| 23 | + (i32.const 1) |
| 24 | + ) |
| 25 | + ) |
| 26 | + (call $log |
| 27 | + (local.get $x) |
| 28 | + (local.get $x) |
| 29 | + ) |
| 30 | + |
| 31 | + (local.set $y |
| 32 | + (i32.add |
| 33 | + (local.get $p) |
| 34 | + (i32.const 1) |
| 35 | + ) |
| 36 | + ) |
| 37 | + (call $log |
| 38 | + (local.get $y) |
| 39 | + (local.get $y) |
| 40 | + ) |
| 41 | + ) |
| 42 | + |
| 43 | + ;; CHECK: (func $call-foo (param $p i32) |
| 44 | + ;; CHECK-NEXT: (local $1 i32) |
| 45 | + ;; CHECK-NEXT: (local $2 i32) |
| 46 | + ;; CHECK-NEXT: (call $log |
| 47 | + ;; CHECK-NEXT: (local.tee $2 |
| 48 | + ;; CHECK-NEXT: (local.tee $1 |
| 49 | + ;; CHECK-NEXT: (i32.add |
| 50 | + ;; CHECK-NEXT: (local.get $p) |
| 51 | + ;; CHECK-NEXT: (i32.const 1) |
| 52 | + ;; CHECK-NEXT: ) |
| 53 | + ;; CHECK-NEXT: ) |
| 54 | + ;; CHECK-NEXT: ) |
| 55 | + ;; CHECK-NEXT: (local.get $2) |
| 56 | + ;; CHECK-NEXT: ) |
| 57 | + ;; CHECK-NEXT: (call $log |
| 58 | + ;; CHECK-NEXT: (local.get $1) |
| 59 | + ;; CHECK-NEXT: (local.get $1) |
| 60 | + ;; CHECK-NEXT: ) |
| 61 | + ;; CHECK-NEXT: ) |
| 62 | + (func $call-foo (export "call-foo") (param $p i32) |
| 63 | + (call $foo |
| 64 | + (local.get $p) |
| 65 | + ) |
| 66 | + ) |
| 67 | +) |
0 commit comments