half4 main() {
    half4 result = half4(0);

    // Two variables, both used
    for (half a = 0, b = 0; a < 10 && b < 10; ++a, ++b) {
        result.r += a;
        result.g += b;
    }

    // Two variables, one dead
    for (int c = 0, d = 0; c < 10; ++c) {
        result.b += 1;
    }

    // Three variables, all used, some array-typed
    for (float d[2] = float[2](0, 10), e[4] = float[4](1,2,3,4), f = 9; d[0] < d[1]; ++d[0]) {
        result.a = half(e[0] * f);
    }

    // Four variables, all dead
    for (half4 x, y, z, w;; ) break;

    return result;
}
