Hey, today out of curiosity i've put my GLSL Vertex and Fragment shader to GPU Shader Analyzer while doing major changes in it.
And what i did get:
1) varying mat4(or mat3) var_name; - causes "error(#174) Not enough data provided for construction constructor" in Fragment shader by just declaring it on every GPU listed in program. Even in empty shader.
2) Arrays. I'm not sure but it looks like using varying array with int variable as iterator in cycle(Vertex Shader) makes it compile on about half of adapters. it says just "unexpected error" on 5xxx and 6xxx series. removing lines using arrays makes it compile on almost everything(except x1xxx and older).
3) Radeon x1xxx and older - even empty shader won't compile on those, it shows N/A on every driver available.
4) Type casting. In some obscure cases(like "Array[int(some_float)] = 1.0") causes crash.
Conclusion: I'm scared. I'm really scared. If AMD GLSL compiler acts the same way on real adapters... That's not even funny, i didn't expect something like that even from AMD. Anyone can tell me that's just Shader Analyzer? Or i'm doing it just wrong?