diff options
author | Alon Zakai <azakai@google.com> | 2022-07-22 08:21:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-22 08:21:42 -0700 |
commit | ed704448a6883e9ee0b2f6284f6b5a7b5e7b4aa9 (patch) | |
tree | 2db1f5d38f4c86264549366a499c4db6588c585f /test/lit/help | |
parent | af7c69795668cad3e25a8f80e2e7a9741df97f29 (diff) | |
download | binaryen-ed704448a6883e9ee0b2f6284f6b5a7b5e7b4aa9.tar.gz binaryen-ed704448a6883e9ee0b2f6284f6b5a7b5e7b4aa9.tar.bz2 binaryen-ed704448a6883e9ee0b2f6284f6b5a7b5e7b4aa9.zip |
Grand Unified Flow Analysis (GUFA) (#4598)
This tracks the possible contents in the entire program all at once using a single IR.
That is in contrast to say DeadArgumentElimination of LocalRefining etc., all of whom
look at one particular aspect of the program (function params and returns in DAE,
locals in LocalRefining). The cost is to build up an entire new IR, which takes a lot
of new code (mostly in the already-landed PossibleContents). Another cost
is this new IR is very big and requires a lot of time and memory to process.
The benefit is that this can find opportunities that are only obvious when looking
at the entire program, and also it can track information that is more specialized
than the normal type system in the IR - in particular, this can track an ExactType,
which is the case where we know the value is of a particular type exactly and not
a subtype.
Diffstat (limited to 'test/lit/help')
-rw-r--r-- | test/lit/help/wasm-opt.test | 9 | ||||
-rw-r--r-- | test/lit/help/wasm2js.test | 9 |
2 files changed, 18 insertions, 0 deletions
diff --git a/test/lit/help/wasm-opt.test b/test/lit/help/wasm-opt.test index e0444ae01..70decf453 100644 --- a/test/lit/help/wasm-opt.test +++ b/test/lit/help/wasm-opt.test @@ -173,6 +173,15 @@ ;; CHECK-NEXT: ;; CHECK-NEXT: --gto globally optimize GC types ;; CHECK-NEXT: +;; CHECK-NEXT: --gufa Grand Unified Flow Analysis: +;; CHECK-NEXT: optimize the entire program +;; CHECK-NEXT: using information about what +;; CHECK-NEXT: content can actually appear in +;; CHECK-NEXT: each location +;; CHECK-NEXT: +;; CHECK-NEXT: --gufa-optimizing GUFA plus local optimizations in +;; CHECK-NEXT: functions we modified +;; CHECK-NEXT: ;; CHECK-NEXT: --heap2local replace GC allocations with ;; CHECK-NEXT: locals ;; CHECK-NEXT: diff --git a/test/lit/help/wasm2js.test b/test/lit/help/wasm2js.test index 5d2d29e87..54010cec5 100644 --- a/test/lit/help/wasm2js.test +++ b/test/lit/help/wasm2js.test @@ -132,6 +132,15 @@ ;; CHECK-NEXT: ;; CHECK-NEXT: --gto globally optimize GC types ;; CHECK-NEXT: +;; CHECK-NEXT: --gufa Grand Unified Flow Analysis: +;; CHECK-NEXT: optimize the entire program +;; CHECK-NEXT: using information about what +;; CHECK-NEXT: content can actually appear in +;; CHECK-NEXT: each location +;; CHECK-NEXT: +;; CHECK-NEXT: --gufa-optimizing GUFA plus local optimizations in +;; CHECK-NEXT: functions we modified +;; CHECK-NEXT: ;; CHECK-NEXT: --heap2local replace GC allocations with ;; CHECK-NEXT: locals ;; CHECK-NEXT: |