Skip to content

Improve pass pipeline. Refactor code folding #2156

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

Merged
merged 3 commits into from
Nov 26, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2311,6 +2311,7 @@ export class Module {
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
passes.push("rse");
passes.push("vacuum");
passes.push("code-folding");
passes.push("ssa-nomerge");
passes.push("local-cse");
passes.push("remove-unused-brs");
Expand All @@ -2329,7 +2330,6 @@ export class Module {
passes.push("merge-locals");
passes.push("reorder-locals");
passes.push("dae-optimizing");
passes.push("code-folding");
}
passes.push("optimize-instructions");
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
Expand Down Expand Up @@ -2400,9 +2400,6 @@ export class Module {
passes.push("simplify-globals");
passes.push("vacuum");
}
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
passes.push("code-folding");
}
if (optimizeLevel >= 2 && (this.getFeatures() & FeatureFlags.GC) != 0) {
passes.push("heap2local");
passes.push("merge-locals");
Expand All @@ -2420,6 +2417,7 @@ export class Module {
passes.push("dae-optimizing"); // reduce arity
passes.push("inlining-optimizing"); // and inline if possible
if (optimizeLevel >= 2 || shrinkLevel >= 1) {
passes.push("code-folding");
passes.push("ssa-nomerge");
passes.push("rse");
// move code on early return (after CFG cleanup)
Expand Down Expand Up @@ -2452,6 +2450,7 @@ export class Module {
}
passes.push("remove-unused-brs");
passes.push("remove-unused-names");
passes.push("merge-blocks");
passes.push("vacuum");

passes.push("optimize-instructions");
Expand Down
8 changes: 4 additions & 4 deletions tests/compiler/NonNullable.optimized.wat
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@
)
(func $~start
(local $0 i32)
global.get $~lib/memory/__stack_pointer
i32.const 12
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner1
global.get $~lib/memory/__stack_pointer
i32.const 12
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner0
global.get $~lib/memory/__stack_pointer
i32.const 1324
Expand Down
92 changes: 46 additions & 46 deletions tests/compiler/call-super.optimized.wat
Original file line number Diff line number Diff line change
Expand Up @@ -1598,43 +1598,43 @@
(local $0 i32)
(local $1 i32)
(local $2 i32)
memory.size
i32.const 16
i32.shl
i32.const 17980
i32.sub
i32.const 1
i32.shr_u
global.set $~lib/rt/itcms/threshold
i32.const 1220
i32.const 1216
i32.store
i32.const 1224
i32.const 1216
i32.store
i32.const 1216
global.set $~lib/rt/itcms/pinSpace
i32.const 1252
i32.const 1248
i32.store
i32.const 1256
i32.const 1248
i32.store
i32.const 1248
global.set $~lib/rt/itcms/toSpace
i32.const 1396
i32.const 1392
i32.store
i32.const 1400
i32.const 1392
i32.store
i32.const 1392
global.set $~lib/rt/itcms/fromSpace
global.get $~lib/memory/__stack_pointer
i32.const 4
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner1
memory.size
i32.const 16
i32.shl
i32.const 17980
i32.sub
i32.const 1
i32.shr_u
global.set $~lib/rt/itcms/threshold
i32.const 1220
i32.const 1216
i32.store
i32.const 1224
i32.const 1216
i32.store
i32.const 1216
global.set $~lib/rt/itcms/pinSpace
i32.const 1252
i32.const 1248
i32.store
i32.const 1256
i32.const 1248
i32.store
i32.const 1248
global.set $~lib/rt/itcms/toSpace
i32.const 1396
i32.const 1392
i32.store
i32.const 1400
i32.const 1392
i32.store
i32.const 1392
global.set $~lib/rt/itcms/fromSpace
global.get $~lib/memory/__stack_pointer
i32.const 4
i32.sub
global.set $~lib/memory/__stack_pointer
block $__inlined_func$call-super/test1
global.get $~lib/memory/__stack_pointer
i32.const 1596
Expand Down Expand Up @@ -1901,11 +1901,11 @@
i32.const 4
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner0
block $folding-inner01
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $1
i32.const 0
Expand All @@ -1917,7 +1917,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $0
i32.const 0
Expand All @@ -1936,7 +1936,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
i32.const 0
i32.store
Expand Down Expand Up @@ -2017,7 +2017,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $1
i32.const 0
Expand All @@ -2029,7 +2029,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $0
i32.const 0
Expand All @@ -2048,7 +2048,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
i32.const 0
i32.store
Expand Down Expand Up @@ -2117,7 +2117,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $1
i32.const 0
Expand All @@ -2129,7 +2129,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
local.tee $0
i32.const 0
Expand All @@ -2148,7 +2148,7 @@
global.get $~lib/memory/__stack_pointer
i32.const 1596
i32.lt_s
br_if $folding-inner0
br_if $folding-inner01
global.get $~lib/memory/__stack_pointer
i32.const 0
i32.store
Expand Down
8 changes: 4 additions & 4 deletions tests/compiler/class-overloading.optimized.wat
Original file line number Diff line number Diff line change
Expand Up @@ -1553,11 +1553,11 @@
(local $0 i32)
(local $1 i32)
(local $2 i32)
global.get $~lib/memory/__stack_pointer
i32.const 8
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner1
global.get $~lib/memory/__stack_pointer
i32.const 8
i32.sub
global.set $~lib/memory/__stack_pointer
block $folding-inner0
global.get $~lib/memory/__stack_pointer
i32.const 1932
Expand Down
Loading