 28f9b1c28d
			
		
	
	
		28f9b1c28d
		
	
	
	
	
		
			
			Previously if a non-void function implictly returned, a dummy variable was created as return value. Now instead it returns the result of the OpUndef instruction. This better conveys the presence of undefined behavior to SPIR-V consuming tools (and humans). It also saves one ID per occurrence...
		
			
				
	
	
		
			129 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			5.9 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 74
 | |
| 
 | |
|                               Source GLSL 130
 | |
|                               Capability Shader
 | |
|                1:             ExtInstImport  "GLSL.std.450"
 | |
|                               MemoryModel Logical GLSL450
 | |
|                               EntryPoint Fragment 4  "main"
 | |
|                               ExecutionMode 4 OriginLowerLeft
 | |
|                               Name 4  "main"
 | |
|                               Name 12  "foo(vf4;"
 | |
|                               Name 11  "bar"
 | |
|                               Name 14  "bar("
 | |
|                               Name 17  "unreachableReturn("
 | |
|                               Name 19  "missingReturn("
 | |
|                               Name 22  "h"
 | |
|                               Name 31  "d"
 | |
|                               Name 52  "color"
 | |
|                               Name 54  "BaseColor"
 | |
|                               Name 55  "param"
 | |
|                               Name 61  "f"
 | |
|                               Name 63  "g"
 | |
|                               Name 66  "gl_FragColor"
 | |
|                               Name 73  "bigColor"
 | |
|                               Decorate 54(BaseColor) Smooth
 | |
|                               Decorate 66(gl_FragColor) BuiltIn FragColor
 | |
|                               Decorate 73(bigColor) NoStaticUse
 | |
|                2:             TypeVoid
 | |
|                3:             TypeFunction 2
 | |
|                7:             TypeFloat 32
 | |
|                8:             TypeVector 7(float) 4
 | |
|                9:             TypePointer Function 8(fvec4)
 | |
|               10:             TypeFunction 7(float) 9(ptr)
 | |
|               16:             TypeFunction 7(float)
 | |
|               21:             TypePointer PrivateGlobal 7(float)
 | |
|            22(h):     21(ptr) Variable PrivateGlobal
 | |
|               23:    7(float) Constant 0
 | |
|               30:             TypePointer UniformConstant 7(float)
 | |
|            31(d):     30(ptr) Variable UniformConstant
 | |
|               33:    7(float) Constant 1082549862
 | |
|               34:             TypeBool
 | |
|               38:    7(float) Constant 1067030938
 | |
|               41:    7(float) Constant 1083179008
 | |
|               49:    7(float) Constant 1081711002
 | |
|               53:             TypePointer Input 8(fvec4)
 | |
|    54(BaseColor):     53(ptr) Variable Input
 | |
|               60:             TypePointer Function 7(float)
 | |
|               65:             TypePointer Output 8(fvec4)
 | |
| 66(gl_FragColor):     65(ptr) Variable Output
 | |
|               72:             TypePointer UniformConstant 8(fvec4)
 | |
|     73(bigColor):     72(ptr) Variable UniformConstant
 | |
|          4(main):           2 Function None 3
 | |
|                5:             Label
 | |
|        52(color):      9(ptr) Variable Function
 | |
|        55(param):      9(ptr) Variable Function
 | |
|            61(f):     60(ptr) Variable Function
 | |
|            63(g):     60(ptr) Variable Function
 | |
|                               Store 22(h) 23
 | |
|               56:    8(fvec4) Load 54(BaseColor)
 | |
|                               Store 55(param) 56
 | |
|               57:    7(float) FunctionCall 12(foo(vf4;) 55(param)
 | |
|               58:    8(fvec4) CompositeConstruct 57 57 57 57
 | |
|                               Store 52(color) 58
 | |
|               59:           2 FunctionCall 14(bar()
 | |
|               62:    7(float) FunctionCall 17(unreachableReturn()
 | |
|                               Store 61(f) 62
 | |
|               64:    7(float) FunctionCall 19(missingReturn()
 | |
|                               Store 63(g) 64
 | |
|               67:    8(fvec4) Load 52(color)
 | |
|               68:    7(float) Load 61(f)
 | |
|               69:    8(fvec4) VectorTimesScalar 67 68
 | |
|               70:    7(float) Load 22(h)
 | |
|               71:    8(fvec4) VectorTimesScalar 69 70
 | |
|                               Store 66(gl_FragColor) 71
 | |
|                               Branch 6
 | |
|                6:             Label
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
|     12(foo(vf4;):    7(float) Function None 10
 | |
|          11(bar):      9(ptr) FunctionParameter
 | |
|               13:             Label
 | |
|               24:    8(fvec4) Load 11(bar)
 | |
|               25:    7(float) CompositeExtract 24 0
 | |
|               26:    8(fvec4) Load 11(bar)
 | |
|               27:    7(float) CompositeExtract 26 1
 | |
|               28:    7(float) FAdd 25 27
 | |
|                               ReturnValue 28
 | |
|                               FunctionEnd
 | |
|         14(bar():           2 Function None 3
 | |
|               15:             Label
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
| 17(unreachableReturn():    7(float) Function None 16
 | |
|               18:             Label
 | |
|               32:    7(float) Load 31(d)
 | |
|               35:    34(bool) FOrdLessThan 32 33
 | |
|                               SelectionMerge 37 None
 | |
|                               BranchConditional 35 36 40
 | |
|               36:               Label
 | |
|                                 ReturnValue 38
 | |
|               40:               Label
 | |
|                                 ReturnValue 41
 | |
|               37:             Label
 | |
|               43:    7(float) Undef
 | |
|                               ReturnValue 43
 | |
|                               FunctionEnd
 | |
| 19(missingReturn():    7(float) Function None 16
 | |
|               20:             Label
 | |
|               44:    7(float) Load 31(d)
 | |
|               45:    34(bool) FOrdLessThan 44 41
 | |
|                               SelectionMerge 47 None
 | |
|                               BranchConditional 45 46 47
 | |
|               46:               Label
 | |
|               48:    7(float)   Load 31(d)
 | |
|                                 Store 22(h) 48
 | |
|                                 ReturnValue 49
 | |
|               47:             Label
 | |
|               51:    7(float) Undef
 | |
|                               ReturnValue 51
 | |
|                               FunctionEnd
 |