// errorcheck -0 -m=2

// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test that we restrict inlining into very large functions.
// See issue #26546.

package foo

func small(a []int) int { // ERROR "can inline small as:.*" "small a does not escape"
	// Cost 16 body (need cost < 20).
	// See cmd/compile/internal/gc/inl.go:inlineBigFunction*
	return a[0] + a[1] + a[2] + a[3]
}
func medium(a []int) int { // ERROR "can inline medium as:.*" "medium a does not escape"
	// Cost 32 body (need cost > 20 and cost < 80).
	// See cmd/compile/internal/gc/inl.go:inlineBigFunction*
	return a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7]
}

func f(a []int) int { // ERROR "cannot inline f:.*" "f a does not escape"
	// Add lots of nodes to f's body. We need >5000.
	// See cmd/compile/internal/gc/inl.go:inlineBigFunction*
	a[0] = 0
	a[1] = 0
	a[2] = 0
	a[3] = 0
	a[4] = 0
	a[5] = 0
	a[6] = 0
	a[7] = 0
	a[8] = 0
	a[9] = 0
	a[10] = 0
	a[11] = 0
	a[12] = 0
	a[13] = 0
	a[14] = 0
	a[15] = 0
	a[16] = 0
	a[17] = 0
	a[18] = 0
	a[19] = 0
	a[20] = 0
	a[21] = 0
	a[22] = 0
	a[23] = 0
	a[24] = 0
	a[25] = 0
	a[26] = 0
	a[27] = 0
	a[28] = 0
	a[29] = 0
	a[30] = 0
	a[31] = 0
	a[32] = 0
	a[33] = 0
	a[34] = 0
	a[35] = 0
	a[36] = 0
	a[37] = 0
	a[38] = 0
	a[39] = 0
	a[40] = 0
	a[41] = 0
	a[42] = 0
	a[43] = 0
	a[44] = 0
	a[45] = 0
	a[46] = 0
	a[47] = 0
	a[48] = 0
	a[49] = 0
	a[50] = 0
	a[51] = 0
	a[52] = 0
	a[53] = 0
	a[54] = 0
	a[55] = 0
	a[56] = 0
	a[57] = 0
	a[58] = 0
	a[59] = 0
	a[60] = 0
	a[61] = 0
	a[62] = 0
	a[63] = 0
	a[64] = 0
	a[65] = 0
	a[66] = 0
	a[67] = 0
	a[68] = 0
	a[69] = 0
	a[70] = 0
	a[71] = 0
	a[72] = 0
	a[73] = 0
	a[74] = 0
	a[75] = 0
	a[76] = 0
	a[77] = 0
	a[78] = 0
	a[79] = 0
	a[80] = 0
	a[81] = 0
	a[82] = 0
	a[83] = 0
	a[84] = 0
	a[85] = 0
	a[86] = 0
	a[87] = 0
	a[88] = 0
	a[89] = 0
	a[90] = 0
	a[91] = 0
	a[92] = 0
	a[93] = 0
	a[94] = 0
	a[95] = 0
	a[96] = 0
	a[97] = 0
	a[98] = 0
	a[99] = 0
	a[100] = 0
	a[101] = 0
	a[102] = 0
	a[103] = 0
	a[104] = 0
	a[105] = 0
	a[106] = 0
	a[107] = 0
	a[108] = 0
	a[109] = 0
	a[110] = 0
	a[111] = 0
	a[112] = 0
	a[113] = 0
	a[114] = 0
	a[115] = 0
	a[116] = 0
	a[117] = 0
	a[118] = 0
	a[119] = 0
	a[120] = 0
	a[121] = 0
	a[122] = 0
	a[123] = 0
	a[124] = 0
	a[125] = 0
	a[126] = 0
	a[127] = 0
	a[128] = 0
	a[129] = 0
	a[130] = 0
	a[131] = 0
	a[132] = 0
	a[133] = 0
	a[134] = 0
	a[135] = 0
	a[136] = 0
	a[137] = 0
	a[138] = 0
	a[139] = 0
	a[140] = 0
	a[141] = 0
	a[142] = 0
	a[143] = 0
	a[144] = 0
	a[145] = 0
	a[146] = 0
	a[147] = 0
	a[148] = 0
	a[149] = 0
	a[150] = 0
	a[151] = 0
	a[152] = 0
	a[153] = 0
	a[154] = 0
	a[155] = 0
	a[156] = 0
	a[157] = 0
	a[158] = 0
	a[159] = 0
	a[160] = 0
	a[161] = 0
	a[162] = 0
	a[163] = 0
	a[164] = 0
	a[165] = 0
	a[166] = 0
	a[167] = 0
	a[168] = 0
	a[169] = 0
	a[170] = 0
	a[171] = 0
	a[172] = 0
	a[173] = 0
	a[174] = 0
	a[175] = 0
	a[176] = 0
	a[177] = 0
	a[178] = 0
	a[179] = 0
	a[180] = 0
	a[181] = 0
	a[182] = 0
	a[183] = 0
	a[184] = 0
	a[185] = 0
	a[186] = 0
	a[187] = 0
	a[188] = 0
	a[189] = 0
	a[190] = 0
	a[191] = 0
	a[192] = 0
	a[193] = 0
	a[194] = 0
	a[195] = 0
	a[196] = 0
	a[197] = 0
	a[198] = 0
	a[199] = 0
	a[200] = 0
	a[201] = 0
	a[202] = 0
	a[203] = 0
	a[204] = 0
	a[205] = 0
	a[206] = 0
	a[207] = 0
	a[208] = 0
	a[209] = 0
	a[210] = 0
	a[211] = 0
	a[212] = 0
	a[213] = 0
	a[214] = 0
	a[215] = 0
	a[216] = 0
	a[217] = 0
	a[218] = 0
	a[219] = 0
	a[220] = 0
	a[221] = 0
	a[222] = 0
	a[223] = 0
	a[224] = 0
	a[225] = 0
	a[226] = 0
	a[227] = 0
	a[228] = 0
	a[229] = 0
	a[230] = 0
	a[231] = 0
	a[232] = 0
	a[233] = 0
	a[234] = 0
	a[235] = 0
	a[236] = 0
	a[237] = 0
	a[238] = 0
	a[239] = 0
	a[240] = 0
	a[241] = 0
	a[242] = 0
	a[243] = 0
	a[244] = 0
	a[245] = 0
	a[246] = 0
	a[247] = 0
	a[248] = 0
	a[249] = 0
	a[250] = 0
	a[251] = 0
	a[252] = 0
	a[253] = 0
	a[254] = 0
	a[255] = 0
	a[256] = 0
	a[257] = 0
	a[258] = 0
	a[259] = 0
	a[260] = 0
	a[261] = 0
	a[262] = 0
	a[263] = 0
	a[264] = 0
	a[265] = 0
	a[266] = 0
	a[267] = 0
	a[268] = 0
	a[269] = 0
	a[270] = 0
	a[271] = 0
	a[272] = 0
	a[273] = 0
	a[274] = 0
	a[275] = 0
	a[276] = 0
	a[277] = 0
	a[278] = 0
	a[279] = 0
	a[280] = 0
	a[281] = 0
	a[282] = 0
	a[283] = 0
	a[284] = 0
	a[285] = 0
	a[286] = 0
	a[287] = 0
	a[288] = 0
	a[289] = 0
	a[290] = 0
	a[291] = 0
	a[292] = 0
	a[293] = 0
	a[294] = 0
	a[295] = 0
	a[296] = 0
	a[297] = 0
	a[298] = 0
	a[299] = 0
	a[300] = 0
	a[301] = 0
	a[302] = 0
	a[303] = 0
	a[304] = 0
	a[305] = 0
	a[306] = 0
	a[307] = 0
	a[308] = 0
	a[309] = 0
	a[310] = 0
	a[311] = 0
	a[312] = 0
	a[313] = 0
	a[314] = 0
	a[315] = 0
	a[316] = 0
	a[317] = 0
	a[318] = 0
	a[319] = 0
	a[320] = 0
	a[321] = 0
	a[322] = 0
	a[323] = 0
	a[324] = 0
	a[325] = 0
	a[326] = 0
	a[327] = 0
	a[328] = 0
	a[329] = 0
	a[330] = 0
	a[331] = 0
	a[332] = 0
	a[333] = 0
	a[334] = 0
	a[335] = 0
	a[336] = 0
	a[337] = 0
	a[338] = 0
	a[339] = 0
	a[340] = 0
	a[341] = 0
	a[342] = 0
	a[343] = 0
	a[344] = 0
	a[345] = 0
	a[346] = 0
	a[347] = 0
	a[348] = 0
	a[349] = 0
	a[350] = 0
	a[351] = 0
	a[352] = 0
	a[353] = 0
	a[354] = 0
	a[355] = 0
	a[356] = 0
	a[357] = 0
	a[358] = 0
	a[359] = 0
	a[360] = 0
	a[361] = 0
	a[362] = 0
	a[363] = 0
	a[364] = 0
	a[365] = 0
	a[366] = 0
	a[367] = 0
	a[368] = 0
	a[369] = 0
	a[370] = 0
	a[371] = 0
	a[372] = 0
	a[373] = 0
	a[374] = 0
	a[375] = 0
	a[376] = 0
	a[377] = 0
	a[378] = 0
	a[379] = 0
	a[380] = 0
	a[381] = 0
	a[382] = 0
	a[383] = 0
	a[384] = 0
	a[385] = 0
	a[386] = 0
	a[387] = 0
	a[388] = 0
	a[389] = 0
	a[390] = 0
	a[391] = 0
	a[392] = 0
	a[393] = 0
	a[394] = 0
	a[395] = 0
	a[396] = 0
	a[397] = 0
	a[398] = 0
	a[399] = 0
	a[400] = 0
	a[401] = 0
	a[402] = 0
	a[403] = 0
	a[404] = 0
	a[405] = 0
	a[406] = 0
	a[407] = 0
	a[408] = 0
	a[409] = 0
	a[410] = 0
	a[411] = 0
	a[412] = 0
	a[413] = 0
	a[414] = 0
	a[415] = 0
	a[416] = 0
	a[417] = 0
	a[418] = 0
	a[419] = 0
	a[420] = 0
	a[421] = 0
	a[422] = 0
	a[423] = 0
	a[424] = 0
	a[425] = 0
	a[426] = 0
	a[427] = 0
	a[428] = 0
	a[429] = 0
	a[430] = 0
	a[431] = 0
	a[432] = 0
	a[433] = 0
	a[434] = 0
	a[435] = 0
	a[436] = 0
	a[437] = 0
	a[438] = 0
	a[439] = 0
	a[440] = 0
	a[441] = 0
	a[442] = 0
	a[443] = 0
	a[444] = 0
	a[445] = 0
	a[446] = 0
	a[447] = 0
	a[448] = 0
	a[449] = 0
	a[450] = 0
	a[451] = 0
	a[452] = 0
	a[453] = 0
	a[454] = 0
	a[455] = 0
	a[456] = 0
	a[457] = 0
	a[458] = 0
	a[459] = 0
	a[460] = 0
	a[461] = 0
	a[462] = 0
	a[463] = 0
	a[464] = 0
	a[465] = 0
	a[466] = 0
	a[467] = 0
	a[468] = 0
	a[469] = 0
	a[470] = 0
	a[471] = 0
	a[472] = 0
	a[473] = 0
	a[474] = 0
	a[475] = 0
	a[476] = 0
	a[477] = 0
	a[478] = 0
	a[479] = 0
	a[480] = 0
	a[481] = 0
	a[482] = 0
	a[483] = 0
	a[484] = 0
	a[485] = 0
	a[486] = 0
	a[487] = 0
	a[488] = 0
	a[489] = 0
	a[490] = 0
	a[491] = 0
	a[492] = 0
	a[493] = 0
	a[494] = 0
	a[495] = 0
	a[496] = 0
	a[497] = 0
	a[498] = 0
	a[499] = 0
	a[500] = 0
	a[501] = 0
	a[502] = 0
	a[503] = 0
	a[504] = 0
	a[505] = 0
	a[506] = 0
	a[507] = 0
	a[508] = 0
	a[509] = 0
	a[510] = 0
	a[511] = 0
	a[512] = 0
	a[513] = 0
	a[514] = 0
	a[515] = 0
	a[516] = 0
	a[517] = 0
	a[518] = 0
	a[519] = 0
	a[520] = 0
	a[521] = 0
	a[522] = 0
	a[523] = 0
	a[524] = 0
	a[525] = 0
	a[526] = 0
	a[527] = 0
	a[528] = 0
	a[529] = 0
	a[530] = 0
	a[531] = 0
	a[532] = 0
	a[533] = 0
	a[534] = 0
	a[535] = 0
	a[536] = 0
	a[537] = 0
	a[538] = 0
	a[539] = 0
	a[540] = 0
	a[541] = 0
	a[542] = 0
	a[543] = 0
	a[544] = 0
	a[545] = 0
	a[546] = 0
	a[547] = 0
	a[548] = 0
	a[549] = 0
	a[550] = 0
	a[551] = 0
	a[552] = 0
	a[553] = 0
	a[554] = 0
	a[555] = 0
	a[556] = 0
	a[557] = 0
	a[558] = 0
	a[559] = 0
	a[560] = 0
	a[561] = 0
	a[562] = 0
	a[563] = 0
	a[564] = 0
	a[565] = 0
	a[566] = 0
	a[567] = 0
	a[568] = 0
	a[569] = 0
	a[570] = 0
	a[571] = 0
	a[572] = 0
	a[573] = 0
	a[574] = 0
	a[575] = 0
	a[576] = 0
	a[577] = 0
	a[578] = 0
	a[579] = 0
	a[580] = 0
	a[581] = 0
	a[582] = 0
	a[583] = 0
	a[584] = 0
	a[585] = 0
	a[586] = 0
	a[587] = 0
	a[588] = 0
	a[589] = 0
	a[590] = 0
	a[591] = 0
	a[592] = 0
	a[593] = 0
	a[594] = 0
	a[595] = 0
	a[596] = 0
	a[597] = 0
	a[598] = 0
	a[599] = 0
	a[600] = 0
	a[601] = 0
	a[602] = 0
	a[603] = 0
	a[604] = 0
	a[605] = 0
	a[606] = 0
	a[607] = 0
	a[608] = 0
	a[609] = 0
	a[610] = 0
	a[611] = 0
	a[612] = 0
	a[613] = 0
	a[614] = 0
	a[615] = 0
	a[616] = 0
	a[617] = 0
	a[618] = 0
	a[619] = 0
	a[620] = 0
	a[621] = 0
	a[622] = 0
	a[623] = 0
	a[624] = 0
	a[625] = 0
	a[626] = 0
	a[627] = 0
	a[628] = 0
	a[629] = 0
	a[630] = 0
	a[631] = 0
	a[632] = 0
	a[633] = 0
	a[634] = 0
	a[635] = 0
	a[636] = 0
	a[637] = 0
	a[638] = 0
	a[639] = 0
	a[640] = 0
	a[641] = 0
	a[642] = 0
	a[643] = 0
	a[644] = 0
	a[645] = 0
	a[646] = 0
	a[647] = 0
	a[648] = 0
	a[649] = 0
	a[650] = 0
	a[651] = 0
	a[652] = 0
	a[653] = 0
	a[654] = 0
	a[655] = 0
	a[656] = 0
	a[657] = 0
	a[658] = 0
	a[659] = 0
	a[660] = 0
	a[661] = 0
	a[662] = 0
	a[663] = 0
	a[664] = 0
	a[665] = 0
	a[666] = 0
	a[667] = 0
	a[668] = 0
	a[669] = 0
	a[670] = 0
	a[671] = 0
	a[672] = 0
	a[673] = 0
	a[674] = 0
	a[675] = 0
	a[676] = 0
	a[677] = 0
	a[678] = 0
	a[679] = 0
	a[680] = 0
	a[681] = 0
	a[682] = 0
	a[683] = 0
	a[684] = 0
	a[685] = 0
	a[686] = 0
	a[687] = 0
	a[688] = 0
	a[689] = 0
	a[690] = 0
	a[691] = 0
	a[692] = 0
	a[693] = 0
	a[694] = 0
	a[695] = 0
	a[696] = 0
	a[697] = 0
	a[698] = 0
	a[699] = 0
	a[700] = 0
	a[701] = 0
	a[702] = 0
	a[703] = 0
	a[704] = 0
	a[705] = 0
	a[706] = 0
	a[707] = 0
	a[708] = 0
	a[709] = 0
	a[710] = 0
	a[711] = 0
	a[712] = 0
	a[713] = 0
	a[714] = 0
	a[715] = 0
	a[716] = 0
	a[717] = 0
	a[718] = 0
	a[719] = 0
	a[720] = 0
	a[721] = 0
	a[722] = 0
	a[723] = 0
	a[724] = 0
	a[725] = 0
	a[726] = 0
	a[727] = 0
	a[728] = 0
	a[729] = 0
	a[730] = 0
	a[731] = 0
	a[732] = 0
	a[733] = 0
	a[734] = 0
	a[735] = 0
	a[736] = 0
	a[737] = 0
	a[738] = 0
	a[739] = 0
	a[740] = 0
	a[741] = 0
	a[742] = 0
	a[743] = 0
	a[744] = 0
	a[745] = 0
	a[746] = 0
	a[747] = 0
	a[748] = 0
	a[749] = 0
	a[750] = 0
	a[751] = 0
	a[752] = 0
	a[753] = 0
	a[754] = 0
	a[755] = 0
	a[756] = 0
	a[757] = 0
	a[758] = 0
	a[759] = 0
	a[760] = 0
	a[761] = 0
	a[762] = 0
	a[763] = 0
	a[764] = 0
	a[765] = 0
	a[766] = 0
	a[767] = 0
	a[768] = 0
	a[769] = 0
	a[770] = 0
	a[771] = 0
	a[772] = 0
	a[773] = 0
	a[774] = 0
	a[775] = 0
	a[776] = 0
	a[777] = 0
	a[778] = 0
	a[779] = 0
	a[780] = 0
	a[781] = 0
	a[782] = 0
	a[783] = 0
	a[784] = 0
	a[785] = 0
	a[786] = 0
	a[787] = 0
	a[788] = 0
	a[789] = 0
	a[790] = 0
	a[791] = 0
	a[792] = 0
	a[793] = 0
	a[794] = 0
	a[795] = 0
	a[796] = 0
	a[797] = 0
	a[798] = 0
	a[799] = 0
	a[800] = 0
	a[801] = 0
	a[802] = 0
	a[803] = 0
	a[804] = 0
	a[805] = 0
	a[806] = 0
	a[807] = 0
	a[808] = 0
	a[809] = 0
	a[810] = 0
	a[811] = 0
	a[812] = 0
	a[813] = 0
	a[814] = 0
	a[815] = 0
	a[816] = 0
	a[817] = 0
	a[818] = 0
	a[819] = 0
	a[820] = 0
	a[821] = 0
	a[822] = 0
	a[823] = 0
	a[824] = 0
	a[825] = 0
	a[826] = 0
	a[827] = 0
	a[828] = 0
	a[829] = 0
	a[830] = 0
	a[831] = 0
	a[832] = 0
	a[833] = 0
	a[834] = 0
	a[835] = 0
	a[836] = 0
	a[837] = 0
	a[838] = 0
	a[839] = 0
	a[840] = 0
	a[841] = 0
	a[842] = 0
	a[843] = 0
	a[844] = 0
	a[845] = 0
	a[846] = 0
	a[847] = 0
	a[848] = 0
	a[849] = 0
	a[850] = 0
	a[851] = 0
	a[852] = 0
	a[853] = 0
	a[854] = 0
	a[855] = 0
	a[856] = 0
	a[857] = 0
	a[858] = 0
	a[859] = 0
	a[860] = 0
	a[861] = 0
	a[862] = 0
	a[863] = 0
	a[864] = 0
	a[865] = 0
	a[866] = 0
	a[867] = 0
	a[868] = 0
	a[869] = 0
	a[870] = 0
	a[871] = 0
	a[872] = 0
	a[873] = 0
	a[874] = 0
	a[875] = 0
	a[876] = 0
	a[877] = 0
	a[878] = 0
	a[879] = 0
	a[880] = 0
	a[881] = 0
	a[882] = 0
	a[883] = 0
	a[884] = 0
	a[885] = 0
	a[886] = 0
	a[887] = 0
	a[888] = 0
	a[889] = 0
	a[890] = 0
	a[891] = 0
	a[892] = 0
	a[893] = 0
	a[894] = 0
	a[895] = 0
	a[896] = 0
	a[897] = 0
	a[898] = 0
	a[899] = 0
	a[900] = 0
	a[901] = 0
	a[902] = 0
	a[903] = 0
	a[904] = 0
	a[905] = 0
	a[906] = 0
	a[907] = 0
	a[908] = 0
	a[909] = 0
	a[910] = 0
	a[911] = 0
	a[912] = 0
	a[913] = 0
	a[914] = 0
	a[915] = 0
	a[916] = 0
	a[917] = 0
	a[918] = 0
	a[919] = 0
	a[920] = 0
	a[921] = 0
	a[922] = 0
	a[923] = 0
	a[924] = 0
	a[925] = 0
	a[926] = 0
	a[927] = 0
	a[928] = 0
	a[929] = 0
	a[930] = 0
	a[931] = 0
	a[932] = 0
	a[933] = 0
	a[934] = 0
	a[935] = 0
	a[936] = 0
	a[937] = 0
	a[938] = 0
	a[939] = 0
	a[940] = 0
	a[941] = 0
	a[942] = 0
	a[943] = 0
	a[944] = 0
	a[945] = 0
	a[946] = 0
	a[947] = 0
	a[948] = 0
	a[949] = 0
	a[950] = 0
	a[951] = 0
	a[952] = 0
	a[953] = 0
	a[954] = 0
	a[955] = 0
	a[956] = 0
	a[957] = 0
	a[958] = 0
	a[959] = 0
	a[960] = 0
	a[961] = 0
	a[962] = 0
	a[963] = 0
	a[964] = 0
	a[965] = 0
	a[966] = 0
	a[967] = 0
	a[968] = 0
	a[969] = 0
	a[970] = 0
	a[971] = 0
	a[972] = 0
	a[973] = 0
	a[974] = 0
	a[975] = 0
	a[976] = 0
	a[977] = 0
	a[978] = 0
	a[979] = 0
	a[980] = 0
	a[981] = 0
	a[982] = 0
	a[983] = 0
	a[984] = 0
	a[985] = 0
	a[986] = 0
	a[987] = 0
	a[988] = 0
	a[989] = 0
	a[990] = 0
	a[991] = 0
	a[992] = 0
	a[993] = 0
	a[994] = 0
	a[995] = 0
	a[996] = 0
	a[997] = 0
	a[998] = 0
	a[999] = 0
	x := small(a)  // ERROR "inlining call to small .*"
	y := medium(a) // The crux of this test: medium is not inlined.
	return x + y
}