Skip to content

Commit 1510bac

Browse files
authored
[pipeline] Add early inline pass (#2117)
1 parent 9f9cde1 commit 1510bac

File tree

93 files changed

+63211
-63045
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+63211
-63045
lines changed

src/module.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,6 +2298,7 @@ export class Module {
22982298
// --- PassRunner::addDefaultFunctionOptimizationPasses ---
22992299
if (optimizeLevel >= 2) {
23002300
passes.push("once-reduction");
2301+
passes.push("inlining");
23012302
}
23022303
if (optimizeLevel >= 3 || shrinkLevel >= 1) {
23032304
passes.push("rse");

tests/compiler/NonNullable.optimized.wat

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
(local $2 i32)
2424
(local $3 i32)
2525
(local $4 i32)
26+
(local $5 i32)
2627
local.get $0
2728
local.get $1
2829
i32.eq
@@ -57,47 +58,47 @@
5758
i32.const 0
5859
return
5960
end
60-
block $__inlined_func$~lib/util/string/compareImpl (result i32)
61-
local.get $0
62-
local.tee $2
63-
i32.const 7
64-
i32.and
65-
local.get $1
66-
i32.const 7
67-
i32.and
68-
i32.or
69-
i32.eqz
70-
local.get $3
71-
local.tee $0
72-
i32.const 4
73-
i32.ge_u
74-
i32.and
75-
if
76-
loop $do-loop|0
61+
local.get $0
62+
local.tee $2
63+
i32.const 7
64+
i32.and
65+
local.get $1
66+
i32.const 7
67+
i32.and
68+
i32.or
69+
i32.eqz
70+
local.get $3
71+
local.tee $0
72+
i32.const 4
73+
i32.ge_u
74+
i32.and
75+
if
76+
loop $do-loop|0
77+
local.get $2
78+
i64.load
79+
local.get $1
80+
i64.load
81+
i64.eq
82+
if
7783
local.get $2
78-
i64.load
84+
i32.const 8
85+
i32.add
86+
local.set $2
7987
local.get $1
80-
i64.load
81-
i64.eq
82-
if
83-
local.get $2
84-
i32.const 8
85-
i32.add
86-
local.set $2
87-
local.get $1
88-
i32.const 8
89-
i32.add
90-
local.set $1
91-
local.get $0
92-
i32.const 4
93-
i32.sub
94-
local.tee $0
95-
i32.const 4
96-
i32.ge_u
97-
br_if $do-loop|0
98-
end
88+
i32.const 8
89+
i32.add
90+
local.set $1
91+
local.get $0
92+
i32.const 4
93+
i32.sub
94+
local.tee $0
95+
i32.const 4
96+
i32.ge_u
97+
br_if $do-loop|0
9998
end
10099
end
100+
end
101+
block $__inlined_func$~lib/util/string/compareImpl
101102
loop $while-continue|1
102103
local.get $0
103104
local.tee $3
@@ -108,17 +109,16 @@
108109
if
109110
local.get $2
110111
i32.load16_u
111-
local.tee $3
112+
local.tee $5
112113
local.get $1
113114
i32.load16_u
114115
local.tee $4
116+
i32.sub
117+
local.set $3
118+
local.get $4
119+
local.get $5
115120
i32.ne
116-
if
117-
local.get $3
118-
local.get $4
119-
i32.sub
120-
br $__inlined_func$~lib/util/string/compareImpl
121-
end
121+
br_if $__inlined_func$~lib/util/string/compareImpl
122122
local.get $2
123123
i32.const 2
124124
i32.add
@@ -131,16 +131,18 @@
131131
end
132132
end
133133
i32.const 0
134+
local.set $3
134135
end
136+
local.get $3
135137
i32.eqz
136138
)
137139
(func $~start
138140
(local $0 i32)
139-
global.get $~lib/memory/__stack_pointer
140-
i32.const 12
141-
i32.sub
142-
global.set $~lib/memory/__stack_pointer
143141
block $folding-inner1
142+
global.get $~lib/memory/__stack_pointer
143+
i32.const 12
144+
i32.sub
145+
global.set $~lib/memory/__stack_pointer
144146
block $folding-inner0
145147
global.get $~lib/memory/__stack_pointer
146148
i32.const 1324

0 commit comments

Comments
 (0)