@@ -232,53 +232,49 @@ func main() {
232
232
233
233
{
234
234
c := 3
235
- func () { // ERROR "can inline main.func26 "
235
+ func () { // ERROR "func literal does not escape "
236
236
c = 4
237
- func () {
237
+ func () { // ERROR "func literal does not escape"
238
238
if c != 4 {
239
239
ppanic ("c != 4" )
240
240
}
241
241
recover () // prevent inlining
242
242
}()
243
- }() // ERROR "inlining call to main.func26" "func literal does not escape"
243
+ }()
244
244
if c != 4 {
245
245
ppanic ("c != 4" )
246
246
}
247
247
}
248
248
249
249
{
250
250
a := 2
251
- // This has an unfortunate exponential growth, where as we visit each
252
- // function, we inline the inner closure, and that constructs a new
253
- // function for any closures inside the inner function, and then we
254
- // revisit those. E.g., func34 and func36 are constructed by the inliner.
255
- if r := func (x int ) int { // ERROR "can inline main.func27"
251
+ if r := func (x int ) int { // ERROR "func literal does not escape"
256
252
b := 3
257
- return func (y int ) int { // ERROR "can inline main.func27.1" "can inline main.func34"
253
+ return func (y int ) int { // ERROR "can inline main.func27.1"
258
254
c := 5
259
- return func (z int ) int { // ERROR "can inline main.func27.1.1" "can inline main.func27.(func)?2" "can inline main.func34.1" "can inline main.func36"
255
+ return func (z int ) int { // ERROR "can inline main.func27.1.1" "can inline main.func27.(func)?2"
260
256
return a * x + b * y + c * z
261
257
}(10 ) // ERROR "inlining call to main.func27.1.1"
262
258
}(100 ) // ERROR "inlining call to main.func27.1" "inlining call to main.func27.(func)?2"
263
- }(1000 ); r != 2350 { // ERROR "inlining call to main.func27" "inlining call to main.func34" "inlining call to main.func36"
259
+ }(1000 ); r != 2350 {
264
260
ppanic ("r != 2350" )
265
261
}
266
262
}
267
263
268
264
{
269
265
a := 2
270
- if r := func (x int ) int { // ERROR "can inline main.func28 "
266
+ if r := func (x int ) int { // ERROR "func literal does not escape "
271
267
b := 3
272
- return func (y int ) int { // ERROR "can inline main.func28.1" "can inline main.func35"
268
+ return func (y int ) int { // ERROR "can inline main.func28.1"
273
269
c := 5
274
- func (z int ) { // ERROR "can inline main.func28.1.1" "can inline main.func28.(func)?2" "can inline main.func35.1" "can inline main.func37"
270
+ func (z int ) { // ERROR "can inline main.func28.1.1" "can inline main.func28.(func)?2"
275
271
a = a * x
276
272
b = b * y
277
273
c = c * z
278
274
}(10 ) // ERROR "inlining call to main.func28.1.1"
279
275
return a + c
280
276
}(100 ) + b // ERROR "inlining call to main.func28.1" "inlining call to main.func28.(func)?2"
281
- }(1000 ); r != 2350 { // ERROR "inlining call to main.func28" "inlining call to main.func35" "inlining call to main.func37"
277
+ }(1000 ); r != 2350 {
282
278
ppanic ("r != 2350" )
283
279
}
284
280
if a != 2000 {
0 commit comments