diff options
author | Alon Zakai <azakai@google.com> | 2023-06-27 15:27:07 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-27 15:27:07 -0700 |
commit | aaf1dac49865024fbde9d316c4a46345186217af (patch) | |
tree | f8d2e0bcee1745492a602f8fb4aa1a9b9bd6d1e8 /test | |
parent | fd9d04ccd615b185e65a765e3587eae3f72aa867 (diff) | |
download | binaryen-aaf1dac49865024fbde9d316c4a46345186217af.tar.gz binaryen-aaf1dac49865024fbde9d316c4a46345186217af.tar.bz2 binaryen-aaf1dac49865024fbde9d316c4a46345186217af.zip |
Fix opt/shrink levels when running the optimizer multiple times, Part 2 (#5787)
This is a followup to #5333 . That fixed the selection of which passes to run, but
forgot to also fix the global state of the current optimize/shrink levels. This PR
fixes that. As a result, running -O3 -Oz will now work as expected: the first -O3
will run the right passes (as #5333 fixed) and while running them, the global
optimize/shrinkLevels will be -O3 (and not -Oz), which this PR fixes.
A specific result of this is that -O3 -Oz used to inline less, since the invocation
of inlining during -O3 thought we were optimizing for size. The new test verifies
that we do fully inline in the first -O3 now.
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/passes/O3_Oz.wast | 45 | ||||
-rw-r--r-- | test/lit/passes/skip-missing.wast | 8 |
2 files changed, 45 insertions, 8 deletions
diff --git a/test/lit/passes/O3_Oz.wast b/test/lit/passes/O3_Oz.wast new file mode 100644 index 000000000..a60064778 --- /dev/null +++ b/test/lit/passes/O3_Oz.wast @@ -0,0 +1,45 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. + +;; RUN: foreach %s %t wasm-opt -O3 -Oz -S -o - | filecheck %s + +(module + (func $inline.me (param $x i32) (result i32) + (i32.add + (local.get $x) + (i32.const 2) + ) + ) + + (func "export" (param $x i32) (result i32) + ;; $inline.me is called twice, so we do not always inline it like called- + ;; once functions are. -Oz is too cautious to inline such things that may + ;; end up increasing total code size, but we are running -O3 -Oz here and so + ;; the first -O3 will inline there. That is, this test verifies that the + ;; later -Oz does not affect the earlier -O3 (which it could, if -Oz set + ;; global state that -O3 then reads to see the optimization and shrink + ;; levels). + (i32.add + (call $inline.me + (local.get $x) + ) + (call $inline.me + (local.get $x) + ) + ) + ) +) +;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) + +;; CHECK: (export "export" (func $1)) + +;; CHECK: (func $1 (; has Stack IR ;) (param $0 i32) (result i32) +;; CHECK-NEXT: (i32.add +;; CHECK-NEXT: (local.tee $0 +;; CHECK-NEXT: (i32.add +;; CHECK-NEXT: (local.get $0) +;; CHECK-NEXT: (i32.const 2) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (local.get $0) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) diff --git a/test/lit/passes/skip-missing.wast b/test/lit/passes/skip-missing.wast deleted file mode 100644 index 02778dab0..000000000 --- a/test/lit/passes/skip-missing.wast +++ /dev/null @@ -1,8 +0,0 @@ -;; We should warn on a pass called "waka" not having been run and skipped. - -;; RUN: wasm-opt %s -O1 --skip-pass=waka 2>&1 | filecheck %s - -;; CHECK: warning: --waka was requested to be skipped, but it was not found in the passes that were run. - -(module -) |