half4 main(float2 coords) {
    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;

    // Just referencing a variable instead of declaring it--legal, if not meaningful.
    for (result;; ) break;

    return result;
}
