OpenGL/GLSL issue - early return doesn't work in FS as expected

It seems my question got lost somehow; I'll ask again:


I have got the following Fragment Shader:


#version 450

uniform int umsch;//umschalten

layout(location = 0)   out vec4 Helligkeit;


void main( void ){

  do {

    if(umsch!== 0){

      Helligkeit = vec4(0.0f, 1.0f, 1.0f, 1.0f);




  } while(false);

  Helligkeit = vec4(0.5f);




I can toggle the uniform variable umsch by a keystroke through the OpenGL API. The GLSL compiler doesn't seem to respect the early return IF I uncomment the break statement. When there is no break statement everything works as expected and the output colour can be switched to teal.

But the GLSL 4.5 spec explicitly allows for early returns (in the main function and elsewhere). I have several similar examples at hand that show that early returns are not respected when there is a break inside a loop statement.

Can anyone reproduce my results or knows whether I'm starting from wrong assumptions? Where can I file a bug report for the AMD drivers?


My setup is a RX480 with the latest drivers on Windows 7 64bit.