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- Track source locations throughout the IR.  There are currently several
10  places where we cannot emit line numbers for errors (and currently emit 0:0)
11  because we've "lost" the line number information.  This is particularly
12  noticeable at link time.
13