1cb93a386Sopenharmony_ciuniform half4 colorGreen;
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_civoid original_fuzzer_output() {
4cb93a386Sopenharmony_ci    float y[8],z;
5cb93a386Sopenharmony_ci    z,y[3 .1L[y[7]=y[3],4]]+=0;
6cb93a386Sopenharmony_ci}
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_cihalf4 main(float2 coords) {
9cb93a386Sopenharmony_ci    int x[1], y=0, z=0;
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci    // This line triggers two optimizations:
12cb93a386Sopenharmony_ci    // 1 - No-op arithmetic simplification removes the `+= 0` and changes the ref-kind of `x` from
13cb93a386Sopenharmony_ci    //     "write" to "read". Crucially, the ref-kind of `y` must remain "write."
14cb93a386Sopenharmony_ci    // 2 - Comma-operator simplification detects that the leftmost `0, ` has no side effect and
15cb93a386Sopenharmony_ci    //     eliminates it. This is done by returning a clone of the right-side expression. The act of
16cb93a386Sopenharmony_ci    //     cloning the right-side expression can lead to an assertion if `y` has the wrong ref-kind.
17cb93a386Sopenharmony_ci    0, x[y=z] += 0;
18cb93a386Sopenharmony_ci
19cb93a386Sopenharmony_ci    return colorGreen;
20cb93a386Sopenharmony_ci}
21