1.) “invariant gl_Position;” should not be allowed in a fragment shader, since gl_Position has no meaning there.
2.) a semicolon after the body of a function seems not to be allowed by GLSL. So,
main()
{
…
};
should cause some error.
I found these two problems while trying to get some GLSL1.50 shaders (developed on a nVidia card) run on an ATI card.