xref: /PHP-8.2/ext/opcache/tests/jit/gh8030-002.phpt (revision c16ad918)
1--TEST--
2GH-8030: Segfault with JIT and large match/switch statements 002
3--EXTENSIONS--
4opcache
5--INI--
6opcache.enable=1
7opcache.enable_cli=1
8opcache.jit=1255
9opcache.file_update_protection=0
10opcache.revalidate_freq=0
11opcache.protect_memory=1
12--FILE--
13<?php
14function lookup($s){
15    switch($s){
16        case 1: return 1;
17        case 2: return 2;
18        case 3: return 3;
19        case 4: return 4;
20        case 5: return 5;
21        case 6: return 6;
22        case 7: return 7;
23        case 8: return 8;
24        case 9: return 9;
25        case 10: return 10;
26        case 11: return 11;
27        case 12: return 12;
28        case 13: return 13;
29        case 14: return 14;
30        case 15: return 15;
31        case 16: return 16;
32        case 17: return 17;
33        case 18: return 18;
34        case 19: return 19;
35        case 20: return 20;
36        case 21: return 21;
37        case 22: return 22;
38        case 23: return 23;
39        case 24: return 24;
40        case 25: return 25;
41        case 26: return 26;
42        case 27: return 27;
43        case 28: return 28;
44        case 29: return 29;
45        case 30: return 30;
46        case 31: return 31;
47        case 32: return 32;
48        case 33: return 33;
49        case 34: return 34;
50        case 35: return 35;
51        case 36: return 36;
52        case 37: return 37;
53        case 38: return 38;
54        case 39: return 39;
55        case 40: return 40;
56        case 41: return 41;
57        case 42: return 42;
58        case 43: return 43;
59        case 44: return 44;
60        case 45: return 45;
61        case 46: return 46;
62        case 47: return 47;
63        case 48: return 48;
64        case 49: return 49;
65        case 50: return 50;
66        case 51: return 51;
67        case 52: return 52;
68        case 53: return 53;
69        case 54: return 54;
70        case 55: return 55;
71        case 56: return 56;
72        case 57: return 57;
73        case 58: return 58;
74        case 59: return 59;
75        case 60: return 60;
76        case 61: return 61;
77        case 62: return 62;
78        case 63: return 63;
79        case 64: return 64;
80        case 65: return 65;
81        case 66: return 66;
82        case 67: return 67;
83        case 68: return 68;
84        case 69: return 69;
85        case 70: return 70;
86        case 71: return 71;
87        case 72: return 72;
88        case 73: return 73;
89        case 74: return 74;
90        case 75: return 75;
91        case 76: return 76;
92        case 77: return 77;
93        case 78: return 78;
94        case 79: return 79;
95        case 80: return 80;
96        case 81: return 81;
97        case 82: return 82;
98        case 83: return 83;
99        case 84: return 84;
100        case 85: return 85;
101        case 86: return 86;
102        case 87: return 87;
103        case 88: return 88;
104        case 89: return 89;
105        case 90: return 90;
106        case 91: return 91;
107        case 92: return 92;
108        case 93: return 93;
109        case 94: return 94;
110        case 95: return 95;
111        case 96: return 96;
112        case 97: return 97;
113        case 98: return 98;
114        case 99: return 99;
115        case 100: return 100;
116        case 101: return 101;
117        case 102: return 102;
118        case 103: return 103;
119        case 104: return 104;
120        case 105: return 105;
121        case 106: return 106;
122        case 107: return 107;
123        case 108: return 108;
124        case 109: return 109;
125        case 110: return 110;
126        case 111: return 111;
127        case 112: return 112;
128        case 113: return 113;
129        case 114: return 114;
130        case 115: return 115;
131        case 116: return 116;
132        case 117: return 117;
133        case 118: return 118;
134        case 119: return 119;
135        case 120: return 120;
136        case 121: return 121;
137        case 122: return 122;
138        case 123: return 123;
139        case 124: return 124;
140        case 125: return 125;
141        case 126: return 126;
142        case 127: return 127;
143        case 128: return 128;
144        case 129: return 129;
145        case 130: return 130;
146        case 131: return 131;
147        case 132: return 132;
148        case 133: return 133;
149        case 134: return 134;
150        case 135: return 135;
151        case 136: return 136;
152        case 137: return 137;
153        case 138: return 138;
154        case 139: return 139;
155        case 140: return 140;
156        case 141: return 141;
157        case 142: return 142;
158        case 143: return 143;
159        case 144: return 144;
160        case 145: return 145;
161        case 146: return 146;
162        case 147: return 147;
163        case 148: return 148;
164        case 149: return 149;
165        case 150: return 150;
166        case 151: return 151;
167        case 152: return 152;
168        case 153: return 153;
169        case 154: return 154;
170        case 155: return 155;
171        case 156: return 156;
172        case 157: return 157;
173        case 158: return 158;
174        case 159: return 159;
175        case 160: return 160;
176        case 161: return 161;
177        case 162: return 162;
178        case 163: return 163;
179        case 164: return 164;
180        case 165: return 165;
181        case 166: return 166;
182        case 167: return 167;
183        case 168: return 168;
184        case 169: return 169;
185        case 170: return 170;
186        case 171: return 171;
187        case 172: return 172;
188        case 173: return 173;
189        case 174: return 174;
190        case 175: return 175;
191        case 176: return 176;
192        case 177: return 177;
193        case 178: return 178;
194        case 179: return 179;
195        case 180: return 180;
196        case 181: return 181;
197        case 182: return 182;
198        case 183: return 183;
199        case 184: return 184;
200        case 185: return 185;
201        case 186: return 186;
202        case 187: return 187;
203        case 188: return 188;
204        case 189: return 189;
205        case 190: return 190;
206        case 191: return 191;
207        case 192: return 192;
208        case 193: return 193;
209        case 194: return 194;
210        case 195: return 195;
211        case 196: return 196;
212        case 197: return 197;
213        case 198: return 198;
214        case 199: return 199;
215        case 200: return 200;
216        case 201: return 201;
217        case 202: return 202;
218        case 203: return 203;
219        case 204: return 204;
220        case 205: return 205;
221        case 206: return 206;
222        case 207: return 207;
223        case 208: return 208;
224        case 209: return 209;
225        case 210: return 210;
226        case 211: return 211;
227        case 212: return 212;
228        case 213: return 213;
229        case 214: return 214;
230        case 215: return 215;
231        case 216: return 216;
232        case 217: return 217;
233        case 218: return 218;
234        case 219: return 219;
235        case 220: return 220;
236        case 221: return 221;
237        case 222: return 222;
238        case 223: return 223;
239        case 224: return 224;
240        case 225: return 225;
241        case 226: return 226;
242        case 227: return 227;
243        case 228: return 228;
244        case 229: return 229;
245        case 230: return 230;
246        case 231: return 231;
247        case 232: return 232;
248        case 233: return 233;
249        case 234: return 234;
250        case 235: return 235;
251        case 236: return 236;
252        case 237: return 237;
253        case 238: return 238;
254        case 239: return 239;
255        case 240: return 240;
256        case 241: return 241;
257        case 242: return 242;
258        case 243: return 243;
259        case 244: return 244;
260        case 245: return 245;
261        case 246: return 246;
262        case 247: return 247;
263        case 248: return 248;
264        case 249: return 249;
265        case 250: return 250;
266        case 251: return 251;
267        case 252: return 252;
268        case 253: return 253;
269        case 254: return 254;
270        case 255: return 255;
271        case 256: return 256;
272        case 257: return 257;
273        case 258: return 258;
274        case 259: return 259;
275        case 260: return 260;
276        case 261: return 261;
277        case 262: return 262;
278        case 263: return 263;
279        case 264: return 264;
280        case 265: return 265;
281        case 266: return 266;
282        case 267: return 267;
283        case 268: return 268;
284        case 269: return 269;
285        case 270: return 270;
286        case 271: return 271;
287        case 272: return 272;
288        case 273: return 273;
289        case 274: return 274;
290        case 275: return 275;
291        case 276: return 276;
292        case 277: return 277;
293        case 278: return 278;
294        case 279: return 279;
295        case 280: return 280;
296        case 281: return 281;
297        case 282: return 282;
298        case 283: return 283;
299        case 284: return 284;
300        case 285: return 285;
301        case 286: return 286;
302        case 287: return 287;
303        case 288: return 288;
304        case 289: return 289;
305        case 290: return 290;
306        case 291: return 291;
307        case 292: return 292;
308        case 293: return 293;
309        case 294: return 294;
310        case 295: return 295;
311        case 296: return 296;
312        case 297: return 297;
313        case 298: return 298;
314        case 299: return 299;
315        case 300: return 300;
316        case 301: return 301;
317        case 302: return 302;
318        case 303: return 303;
319        case 304: return 304;
320        case 305: return 305;
321        case 306: return 306;
322        case 307: return 307;
323        case 308: return 308;
324        case 309: return 309;
325        case 310: return 310;
326        case 311: return 311;
327        case 312: return 312;
328        case 313: return 313;
329        case 314: return 314;
330        case 315: return 315;
331        case 316: return 316;
332        case 317: return 317;
333        case 318: return 318;
334        case 319: return 319;
335        case 320: return 320;
336        case 321: return 321;
337        case 322: return 322;
338        case 323: return 323;
339        case 324: return 324;
340        case 325: return 325;
341        case 326: return 326;
342        case 327: return 327;
343        case 328: return 328;
344        case 329: return 329;
345        case 330: return 330;
346        case 331: return 331;
347        case 332: return 332;
348        case 333: return 333;
349        case 334: return 334;
350        case 335: return 335;
351        case 336: return 336;
352        case 337: return 337;
353        case 338: return 338;
354        case 339: return 339;
355        case 340: return 340;
356        case 341: return 341;
357        case 342: return 342;
358        case 343: return 343;
359        case 344: return 344;
360        case 345: return 345;
361        case 346: return 346;
362        case 347: return 347;
363        case 348: return 348;
364        case 349: return 349;
365        case 350: return 350;
366        case 351: return 351;
367        case 352: return 352;
368        case 353: return 353;
369        case 354: return 354;
370        case 355: return 355;
371        case 356: return 356;
372        case 357: return 357;
373        case 358: return 358;
374        case 359: return 359;
375        case 360: return 360;
376        case 361: return 361;
377        case 362: return 362;
378        case 363: return 363;
379        case 364: return 364;
380        case 365: return 365;
381        case 366: return 366;
382        case 367: return 367;
383        case 368: return 368;
384        case 369: return 369;
385        case 370: return 370;
386        case 371: return 371;
387        case 372: return 372;
388        case 373: return 373;
389        case 374: return 374;
390        case 375: return 375;
391        case 376: return 376;
392        case 377: return 377;
393        case 378: return 378;
394        case 379: return 379;
395        case 380: return 380;
396        case 381: return 381;
397        case 382: return 382;
398        case 383: return 383;
399        case 384: return 384;
400        case 385: return 385;
401        case 386: return 386;
402        case 387: return 387;
403        case 388: return 388;
404        case 389: return 389;
405        case 390: return 390;
406        case 391: return 391;
407        case 392: return 392;
408        case 393: return 393;
409        case 394: return 394;
410        case 395: return 395;
411        case 396: return 396;
412        case 397: return 397;
413        case 398: return 398;
414        case 399: return 399;
415        case 400: return 400;
416        case 401: return 401;
417        case 402: return 402;
418        case 403: return 403;
419        case 404: return 404;
420        case 405: return 405;
421        case 406: return 406;
422        case 407: return 407;
423        case 408: return 408;
424        case 409: return 409;
425        case 410: return 410;
426        case 411: return 411;
427        case 412: return 412;
428        case 413: return 413;
429        case 414: return 414;
430        case 415: return 415;
431        case 416: return 416;
432        case 417: return 417;
433        case 418: return 418;
434        case 419: return 419;
435        case 420: return 420;
436        case 421: return 421;
437        case 422: return 422;
438        case 423: return 423;
439        case 424: return 424;
440        case 425: return 425;
441        case 426: return 426;
442        case 427: return 427;
443        case 428: return 428;
444        case 429: return 429;
445        case 430: return 430;
446        case 431: return 431;
447        case 432: return 432;
448        case 433: return 433;
449        case 434: return 434;
450        case 435: return 435;
451        case 436: return 436;
452        case 437: return 437;
453        case 438: return 438;
454        case 439: return 439;
455        case 440: return 440;
456        case 441: return 441;
457        case 442: return 442;
458        case 443: return 443;
459        case 444: return 444;
460        case 445: return 445;
461        case 446: return 446;
462        case 447: return 447;
463        case 448: return 448;
464        case 449: return 449;
465        case 450: return 450;
466        case 451: return 451;
467        case 452: return 452;
468        case 453: return 453;
469        case 454: return 454;
470        case 455: return 455;
471        case 456: return 456;
472        case 457: return 457;
473        case 458: return 458;
474        case 459: return 459;
475        case 460: return 460;
476        case 461: return 461;
477        case 462: return 462;
478        case 463: return 463;
479        case 464: return 464;
480        case 465: return 465;
481        case 466: return 466;
482        case 467: return 467;
483        case 468: return 468;
484        case 469: return 469;
485        case 470: return 470;
486        case 471: return 471;
487        case 472: return 472;
488        case 473: return 473;
489        case 474: return 474;
490        case 475: return 475;
491        case 476: return 476;
492        case 477: return 477;
493        case 478: return 478;
494        case 479: return 479;
495        case 480: return 480;
496        case 481: return 481;
497        case 482: return 482;
498        case 483: return 483;
499        case 484: return 484;
500        case 485: return 485;
501        case 486: return 486;
502        case 487: return 487;
503        case 488: return 488;
504        case 489: return 489;
505        case 490: return 490;
506        case 491: return 491;
507        case 492: return 492;
508        case 493: return 493;
509        case 494: return 494;
510        case 495: return 495;
511        case 496: return 496;
512        case 497: return 497;
513        case 498: return 498;
514        case 499: return 499;
515        case 500: return 500;
516        case 501: return 501;
517        case 502: return 502;
518        case 503: return 503;
519        case 504: return 504;
520        case 505: return 505;
521        case 506: return 506;
522        case 507: return 507;
523        case 508: return 508;
524        case 509: return 509;
525        case 510: return 510;
526        case 511: return 511;
527        case 512: return 512;
528        case 513: return 513;
529        default: return -1;
530    };
531}
532for ($i=0; $i<2; $i++){
533    var_dump(lookup(510));
534    var_dump(lookup(513));
535    var_dump(lookup(-1));
536}
537?>
538==DONE==
539--EXPECT--
540int(510)
541int(513)
542int(-1)
543int(510)
544int(513)
545int(-1)
546==DONE==
547