Skip to content

Commit b4ca3f9

Browse files
authored
Slightly improve pass pipeline (#1498)
1 parent a5d11ed commit b4ca3f9

12 files changed

+5015
-5065
lines changed

Diff for: src/module.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1526,11 +1526,12 @@ export class Module {
15261526
passes.push("remove-unused-brs");
15271527
passes.push("remove-unused-names");
15281528
passes.push("merge-blocks");
1529-
passes.push("precompute");
1529+
passes.push("precompute-propagate");
15301530
}
15311531
if (optimizeLevel >= 3) {
15321532
passes.push("flatten");
15331533
passes.push("simplify-locals-notee-nostructure");
1534+
passes.push("merge-locals");
15341535
passes.push("vacuum");
15351536

15361537
passes.push("code-folding");
@@ -1548,12 +1549,11 @@ export class Module {
15481549
passes.push("optimize-instructions");
15491550
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
15501551
passes.push("dce");
1551-
passes.push("inlining");
15521552
}
15531553
passes.push("remove-unused-brs");
15541554
passes.push("remove-unused-names");
1555-
passes.push("inlining-optimizing");
15561555
if (optimizeLevel >= 3 || shrinkLevel >= 2) {
1556+
passes.push("inlining");
15571557
passes.push("precompute-propagate");
15581558
} else {
15591559
passes.push("precompute");
@@ -1581,9 +1581,6 @@ export class Module {
15811581
passes.push("merge-locals");
15821582
}
15831583
passes.push("vacuum");
1584-
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
1585-
passes.push("code-folding");
1586-
}
15871584
if (optimizeLevel >= 2 || shrinkLevel >= 1) {
15881585
passes.push("simplify-globals-optimizing");
15891586
}
@@ -1622,6 +1619,9 @@ export class Module {
16221619
passes.push("simplify-globals");
16231620
passes.push("vacuum");
16241621
}
1622+
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
1623+
passes.push("code-folding");
1624+
}
16251625
// precompute works best after global optimizations
16261626
if (optimizeLevel >= 2 || shrinkLevel >= 1) {
16271627
passes.push("precompute-propagate");
@@ -1656,7 +1656,7 @@ export class Module {
16561656
passes.push("simplify-locals");
16571657
passes.push("vacuum");
16581658

1659-
passes.push("inlining-optimizing");
1659+
passes.push("inlining");
16601660
passes.push("precompute-propagate");
16611661
passes.push("vacuum");
16621662

Diff for: tests/compiler/issues/1095.optimized.wat

+14-14
Original file line numberDiff line numberDiff line change
@@ -952,16 +952,16 @@
952952
i32.const 16
953953
i32.add
954954
call $~lib/rt/pure/__retain
955-
local.tee $3
955+
local.tee $2
956956
i32.const 1200
957957
i32.store
958-
local.get $3
958+
local.get $2
959959
call $~lib/rt/pure/__retain
960-
local.tee $1
961-
local.set $2
962-
local.get $1
963-
i32.load
964960
local.tee $0
961+
local.set $3
962+
local.get $0
963+
i32.load
964+
local.tee $1
965965
i32.eqz
966966
if
967967
i32.const 1232
@@ -971,25 +971,25 @@
971971
call $~lib/builtins/abort
972972
unreachable
973973
end
974+
local.get $1
974975
local.get $0
975-
local.get $2
976976
i32.load
977-
local.tee $2
977+
local.tee $0
978978
i32.ne
979979
if
980-
local.get $0
980+
local.get $1
981981
call $~lib/rt/pure/__retain
982-
local.set $0
983-
local.get $2
982+
local.set $1
983+
local.get $0
984984
call $~lib/rt/pure/__release
985985
end
986+
local.get $3
986987
local.get $1
987-
local.get $0
988988
i32.store
989-
local.get $1
990-
call $~lib/rt/pure/__release
991989
local.get $3
992990
call $~lib/rt/pure/__release
991+
local.get $2
992+
call $~lib/rt/pure/__release
993993
)
994994
(func $~lib/rt/pure/decrement (param $0 i32)
995995
(local $1 i32)

0 commit comments

Comments
 (0)