 e770b3e6cf
			
		
	
	
		e770b3e6cf
		
	
	
	
	
		
			
			Structured control-flow rules allow leaving the middle of a construct through a return, but not through a jump to a block that does a return. Addresses issue #58.
		
			
				
	
	
		
			127 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| spv.functionCall.frag
 | |
| WARNING: 0:4: varying deprecated in version 130; may be removed in future release
 | |
| 
 | |
| 
 | |
| Linked fragment stage:
 | |
| 
 | |
| 
 | |
| // Module Version 99
 | |
| // Generated by (magic number): 51a00bb
 | |
| // Id's are bound by 73
 | |
| 
 | |
|                               Source GLSL 130
 | |
|                               Capability Shader
 | |
|                1:             ExtInstImport  "GLSL.std.450"
 | |
|                               MemoryModel Logical GLSL450
 | |
|                               EntryPoint Fragment 4  "main"
 | |
|                               ExecutionMode 4 OriginLowerLeft
 | |
|                               Name 4  "main"
 | |
|                               Name 11  "foo(vf4;"
 | |
|                               Name 10  "bar"
 | |
|                               Name 13  "bar("
 | |
|                               Name 16  "unreachableReturn("
 | |
|                               Name 18  "missingReturn("
 | |
|                               Name 21  "h"
 | |
|                               Name 30  "d"
 | |
|                               Name 51  "color"
 | |
|                               Name 53  "BaseColor"
 | |
|                               Name 54  "param"
 | |
|                               Name 60  "f"
 | |
|                               Name 62  "g"
 | |
|                               Name 65  "gl_FragColor"
 | |
|                               Name 72  "bigColor"
 | |
|                               Decorate 53(BaseColor) Smooth
 | |
|                               Decorate 65(gl_FragColor) BuiltIn FragColor
 | |
|                               Decorate 72(bigColor) NoStaticUse
 | |
|                2:             TypeVoid
 | |
|                3:             TypeFunction 2
 | |
|                6:             TypeFloat 32
 | |
|                7:             TypeVector 6(float) 4
 | |
|                8:             TypePointer Function 7(fvec4)
 | |
|                9:             TypeFunction 6(float) 8(ptr)
 | |
|               15:             TypeFunction 6(float)
 | |
|               20:             TypePointer PrivateGlobal 6(float)
 | |
|            21(h):     20(ptr) Variable PrivateGlobal
 | |
|               22:    6(float) Constant 0
 | |
|               29:             TypePointer UniformConstant 6(float)
 | |
|            30(d):     29(ptr) Variable UniformConstant
 | |
|               32:    6(float) Constant 1082549862
 | |
|               33:             TypeBool
 | |
|               37:    6(float) Constant 1067030938
 | |
|               40:    6(float) Constant 1083179008
 | |
|               48:    6(float) Constant 1081711002
 | |
|               52:             TypePointer Input 7(fvec4)
 | |
|    53(BaseColor):     52(ptr) Variable Input
 | |
|               59:             TypePointer Function 6(float)
 | |
|               64:             TypePointer Output 7(fvec4)
 | |
| 65(gl_FragColor):     64(ptr) Variable Output
 | |
|               71:             TypePointer UniformConstant 7(fvec4)
 | |
|     72(bigColor):     71(ptr) Variable UniformConstant
 | |
|          4(main):           2 Function None 3
 | |
|                5:             Label
 | |
|        51(color):      8(ptr) Variable Function
 | |
|        54(param):      8(ptr) Variable Function
 | |
|            60(f):     59(ptr) Variable Function
 | |
|            62(g):     59(ptr) Variable Function
 | |
|                               Store 21(h) 22
 | |
|               55:    7(fvec4) Load 53(BaseColor)
 | |
|                               Store 54(param) 55
 | |
|               56:    6(float) FunctionCall 11(foo(vf4;) 54(param)
 | |
|               57:    7(fvec4) CompositeConstruct 56 56 56 56
 | |
|                               Store 51(color) 57
 | |
|               58:           2 FunctionCall 13(bar()
 | |
|               61:    6(float) FunctionCall 16(unreachableReturn()
 | |
|                               Store 60(f) 61
 | |
|               63:    6(float) FunctionCall 18(missingReturn()
 | |
|                               Store 62(g) 63
 | |
|               66:    7(fvec4) Load 51(color)
 | |
|               67:    6(float) Load 60(f)
 | |
|               68:    7(fvec4) VectorTimesScalar 66 67
 | |
|               69:    6(float) Load 21(h)
 | |
|               70:    7(fvec4) VectorTimesScalar 68 69
 | |
|                               Store 65(gl_FragColor) 70
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
|     11(foo(vf4;):    6(float) Function None 9
 | |
|          10(bar):      8(ptr) FunctionParameter
 | |
|               12:             Label
 | |
|               23:    7(fvec4) Load 10(bar)
 | |
|               24:    6(float) CompositeExtract 23 0
 | |
|               25:    7(fvec4) Load 10(bar)
 | |
|               26:    6(float) CompositeExtract 25 1
 | |
|               27:    6(float) FAdd 24 26
 | |
|                               ReturnValue 27
 | |
|                               FunctionEnd
 | |
|         13(bar():           2 Function None 3
 | |
|               14:             Label
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
| 16(unreachableReturn():    6(float) Function None 15
 | |
|               17:             Label
 | |
|               31:    6(float) Load 30(d)
 | |
|               34:    33(bool) FOrdLessThan 31 32
 | |
|                               SelectionMerge 36 None
 | |
|                               BranchConditional 34 35 39
 | |
|               35:               Label
 | |
|                                 ReturnValue 37
 | |
|               39:               Label
 | |
|                                 ReturnValue 40
 | |
|               36:             Label
 | |
|               42:    6(float) Undef
 | |
|                               ReturnValue 42
 | |
|                               FunctionEnd
 | |
| 18(missingReturn():    6(float) Function None 15
 | |
|               19:             Label
 | |
|               43:    6(float) Load 30(d)
 | |
|               44:    33(bool) FOrdLessThan 43 40
 | |
|                               SelectionMerge 46 None
 | |
|                               BranchConditional 44 45 46
 | |
|               45:               Label
 | |
|               47:    6(float)   Load 30(d)
 | |
|                                 Store 21(h) 47
 | |
|                                 ReturnValue 48
 | |
|               46:             Label
 | |
|               50:    6(float) Undef
 | |
|                               ReturnValue 50
 | |
|                               FunctionEnd
 |