1- Detect code paths in non-void functions that don't reach a return statement 2 3- Improve handling of constants and their initializers. Constant initializers 4 should never generate any code. This is trival for scalar constants. It is 5 also trivial for arrays, matrices, and vectors that are accessed with 6 constant index values. For others it is more complicated. Perhaps these 7 cases should be silently converted to uniforms? 8 9- Implement support for ir_binop_dot in ir_algebraic.cpp. Perform 10 transformations such as "dot(v, vec3(0.0, 1.0, 0.0))" -> v.y. 11 121.30 features: 13 14- Implement AST-to-HIR conversion of bit-shift operators. 15 16- Implement AST-to-HIR conversion of bit-wise {&,|,^,!} operators. 17 18- Implement AST-to-HIR conversion of switch-statements 19 - switch 20 - case 21 - Update break to correcly handle mixed nexting of switch-statements 22 and loops. 23 24- Handle currently unsupported constant expression types 25 - ir_unop_bit_not 26 - ir_binop_mod 27 - ir_binop_lshift 28 - ir_binop_rshift 29 - ir_binop_bit_and 30 - ir_binop_bit_xor 31 - ir_binop_bit_or 32 33- Implement support for 1.30 style shadow compares which only return a float 34 instead of a vec4. 35 36- Implement support for gl_ClipDistance. This is non-trivial because 37 gl_ClipDistance is exposed as a float[8], but all hardware actually 38 implements it as vec4[2].