Yeah, my bad: I didn't give the fourth argument to the light position:
GLfloat light0Position[] = {first, second, third, fourth};
glLightfv(GL_LIGHT0, GL_POSITION, light0Position);
So probably previous compilers have always put zero for missing argument (so it worked), but the latest compiler gives 'random' numbers and random effect.
This issue was only visible after submitting to App Store, because I didn't test it in Release mode (thanks @medvedNick).