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