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