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