1cb93a386Sopenharmony_ci// A continue inside a switch (where permitted) prevents fallthrough to the next case block, just 2cb93a386Sopenharmony_ci// like a break statement would. 3cb93a386Sopenharmony_ci 4cb93a386Sopenharmony_ci// Make sure that we properly dead-strip code following `continue` in a switch. 5cb93a386Sopenharmony_ci// This is particularly relevant because our inliner replaces return statements with continue. 6cb93a386Sopenharmony_ci 7cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed; 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_cihalf4 main(float2 coords) { 10cb93a386Sopenharmony_ci // A looping construct is required for continue. 11cb93a386Sopenharmony_ci float result = 0; 12cb93a386Sopenharmony_ci for (int x=0; x<=1; x++) { 13cb93a386Sopenharmony_ci @switch (2) { 14cb93a386Sopenharmony_ci case 1: result = abs(1); continue; 15cb93a386Sopenharmony_ci case 2: result = abs(2); continue; 16cb93a386Sopenharmony_ci case 3: result = abs(3); continue; 17cb93a386Sopenharmony_ci case 4: result = abs(4); continue; 18cb93a386Sopenharmony_ci } 19cb93a386Sopenharmony_ci } 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ci return result == 2 ? colorGreen : colorRed; 22cb93a386Sopenharmony_ci} 23