In my inhumane shader experiments I stumbled into weird behavior, when some data types didn't worked as Uniform or Varying. Namely:
Uniform Integer and Varying mat3, no compilation errors, but no result either. First one I fixed by using float, second by using mat4.
Standard shades not using any of this, so I'm not sure if it is a bug, or it's just not implemented as being unnecessary?