| uniform half4 colorGreen; |
| |
| void original_fuzzer_output() { |
| float y[8],z; |
| z,y[3 .1L[y[7]=y[3],4]]+=0; |
| } |
| |
| half4 main(float2 coords) { |
| int x[1], y=0, z=0; |
| |
| // This line triggers two optimizations: |
| // 1 - No-op arithmetic simplification removes the `+= 0` and changes the ref-kind of `x` from |
| // "write" to "read". Crucially, the ref-kind of `y` must remain "write." |
| // 2 - Comma-operator simplification detects that the leftmost `0, ` has no side effect and |
| // eliminates it. This is done by returning a clone of the right-side expression. The act of |
| // cloning the right-side expression can lead to an assertion if `y` has the wrong ref-kind. |
| 0, x[y=z] += 0; |
| |
| return colorGreen; |
| } |