uniform half4 colorRed, colorGreen;

struct S {
    int a, b, c;
};

void check_array_1(int[1]) {}
void check_array_2(int[2]) {}
void check_array_3(int[3]) {}

bool test() {
    const S x  = S(1, 2, 3);
    const S xx = S(1, 2, 3);
    const S y  = S(1, 2, 4);

    int a[x.a];
    int b[x.b];
    int c[x.c];
    check_array_1(a);
    check_array_2(b);
    check_array_3(c);

    // Structs with elements lacking side-effects can be optimized.
    int two = 2;
    int flatten0 = S(x.a, two, 3).a;
    int flatten1 = S(x.a, two, 3).b;
    int flatten2 = S(x.a, two, 3).c;

    return (x == xx) && !(x != xx) && (x != y) && !(x == y) && (x.a == y.a) &&
           (flatten0 == x.a) && (flatten1 == x.b) && (flatten2 == x.c);
}

half4 main(float2 coords) {
    return test() ? colorGreen : colorRed;
}
