
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
|