If you mean this shader, then the reason is that the OpenGL GLSL compiler agressively optimizes/removes unused uniforms. It does via checking whether there is any dependency graph from any output of the fragment shader to a uniform. And this dependency does not exist, because ultimately in line 170, the variable `currNormal` is not being used to produce a fragment output.
Ok so, for what I understood, even if the actual uniform (normalMap) is used inside a function but the end result of the latter is not used, all the "stuff" that is used, and only used, there will just be removed?
EDIT
GOD currNormal was not actually used in the row below and that was causing all the problem.
Man THANK YOU SO MUCH, I spent hours trying to fix it looking through the whole project!