47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
#version 450
 | 
						|
 | 
						|
#extension GL_EXT_control_flow_attributes : enable
 | 
						|
 | 
						|
bool cond;
 | 
						|
 | 
						|
void f0() {
 | 
						|
        [[loop]]                   for (;;) { }
 | 
						|
}
 | 
						|
 | 
						|
void f1() {
 | 
						|
        [[dont_unroll]]            while(true) {  }
 | 
						|
}
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
        [[unroll]]                 for (int i = 0; i < 8; ++i) { }
 | 
						|
	f0();
 | 
						|
        [[dependency_infinite]]    do {  } while(true);
 | 
						|
        [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { }
 | 
						|
        [[flatten]]                if (cond) { } else { }
 | 
						|
        [[branch]]                 if (cond) cond = false;
 | 
						|
        [[dont_flatten]]           switch(3) {  }                      // dropped
 | 
						|
        [[dont_flatten]]           switch(3) { case 3: break; }
 | 
						|
 | 
						|
        // warnings on all these
 | 
						|
        [[unroll(2)]]              for (int i = 0; i < 8; ++i) { }
 | 
						|
        [[dont_unroll(-2)]]        while(true) {  }
 | 
						|
        [[dependency_infinite(3)]] do {  } while(true);
 | 
						|
        [[dependency_length]]      for (int i = 0; i < 8; ++i) { }
 | 
						|
        [[flatten(3)]]             if (cond) { } else { }
 | 
						|
        [[branch(5.2)]]            if (cond) cond = false;
 | 
						|
        [[dont_flatten(3 + 7)]]    switch(3) { case 3: break; }
 | 
						|
 | 
						|
        // other valid uses
 | 
						|
        [[ unroll, dont_unroll, dependency_length(2) ]]  while(cond) {  }
 | 
						|
        [ [ dont_flatten , branch ] ]                    switch(3) { case 3: break; }
 | 
						|
        [
 | 
						|
            // attribute
 | 
						|
            [
 | 
						|
                // here
 | 
						|
                flatten
 | 
						|
            ]
 | 
						|
        ]                       if (cond) { } else { }
 | 
						|
        [[ dependency_length(2), dependency_infinite ]]  while(cond) {  }
 | 
						|
}
 |