| void main() { |
| bool expr1 = sk_FragCoord.x > 0; |
| bool expr2 = sk_FragCoord.y > 0; |
| |
| if (true && expr1) { // -> if (expr1) |
| sk_FragColor.r = 1; |
| } else if (false && expr1) { // -> if (false) -> block removed |
| sk_FragColor.r = -2; |
| } else if (true ^^ expr1) { // -> if (!expr1) |
| sk_FragColor.r = 3; |
| } else if (false ^^ expr2) { // -> if (expr2) |
| sk_FragColor.r = 4; |
| } else if (false || expr2) { // -> if (expr2) |
| sk_FragColor.r = 5; |
| } else if (true || expr2) { // -> if (true) -> replaces unreachable else |
| sk_FragColor.r = 6; |
| } else { // removed |
| sk_FragColor.r = -7; |
| } |
| |
| // Test short-circuiting of right hand side boolean literals |
| if (expr1 && true) { // -> if (expr1) |
| sk_FragColor.r = 1; |
| } else if (expr1 && false) { // -> if (false) -> block removed |
| sk_FragColor.r = -2; |
| } else if (expr1 ^^ true) { // -> if (!expr1) |
| sk_FragColor.r = 3; |
| } else if (expr2 ^^ false) { // -> if (expr2) |
| sk_FragColor.r = 4; |
| } else if (expr2 || false) { // -> if (expr2) |
| sk_FragColor.r = 5; |
| } else if (expr2 || true) { // -> if (true) -> replaces unreachable else |
| sk_FragColor.r = 6; |
| } else { // removed |
| sk_FragColor.r = -7; |
| } |
| } |