Does the Spec. allow the update of output variables?

For Example in a variant for point-normal triangulation I use this code:

Code :
    tcw[gl_InvocationID].controlPoints[0] = vsm[gl_InvocationID].mdPosition + edge / 3.0f;
    tcw[gl_InvocationID].controlPoints[0] = tngPrj(tcw[gl_InvocationID].controlPoints[0], 
                                                   vsm[gl_InvocationID].mdPosition,
                                                   vsm[gl_InvocationID].mdNormal);


During tests on different drivers, I found that I have to rewrite the code like:

Code :
    vec3 va = vsm[gl_InvocationID].mdPosition + edge / 3.0f;
    va = tngPrj(va, 
                                                   vsm[gl_InvocationID].mdPosition,
                                                   vsm[gl_InvocationID].mdNormal);
 
    tcw[gl_InvocationID].controlPoints[0] = va;


I'm not sure if I should mark this change as "bug" and regularly test it against new driver versions.