Don't remove SPIR-V blocks before codegen.
A removed block releases its instructions, so Module::idToInstruction suddenly contains dangling references. The original motivation for block removal was to skip some unreachable blocks, but that's already achieved by InReadableOrder.cpp. Also updated stale comments.
This commit is contained in:
@@ -7,12 +7,12 @@ Linked fragment stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 76
|
||||
// Id's are bound by 77
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 57 68
|
||||
EntryPoint Fragment 4 "main" 58 69
|
||||
ExecutionMode 4 OriginLowerLeft
|
||||
Source GLSL 130
|
||||
Name 4 "main"
|
||||
@@ -22,14 +22,14 @@ Linked fragment stage:
|
||||
Name 16 "unreachableReturn("
|
||||
Name 18 "missingReturn("
|
||||
Name 21 "h"
|
||||
Name 34 "d"
|
||||
Name 55 "color"
|
||||
Name 57 "BaseColor"
|
||||
Name 58 "param"
|
||||
Name 63 "f"
|
||||
Name 65 "g"
|
||||
Name 68 "gl_FragColor"
|
||||
Name 75 "bigColor"
|
||||
Name 35 "d"
|
||||
Name 56 "color"
|
||||
Name 58 "BaseColor"
|
||||
Name 59 "param"
|
||||
Name 64 "f"
|
||||
Name 66 "g"
|
||||
Name 69 "gl_FragColor"
|
||||
Name 76 "bigColor"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@@ -44,42 +44,42 @@ Linked fragment stage:
|
||||
24: 23(int) Constant 0
|
||||
25: TypePointer Function 6(float)
|
||||
28: 23(int) Constant 1
|
||||
33: TypePointer UniformConstant 6(float)
|
||||
34(d): 33(ptr) Variable UniformConstant
|
||||
36: 6(float) Constant 1082549862
|
||||
37: TypeBool
|
||||
41: 6(float) Constant 1067030938
|
||||
44: 6(float) Constant 1083179008
|
||||
52: 6(float) Constant 1081711002
|
||||
56: TypePointer Input 7(fvec4)
|
||||
57(BaseColor): 56(ptr) Variable Input
|
||||
67: TypePointer Output 7(fvec4)
|
||||
68(gl_FragColor): 67(ptr) Variable Output
|
||||
74: TypePointer UniformConstant 7(fvec4)
|
||||
75(bigColor): 74(ptr) Variable UniformConstant
|
||||
34: TypePointer UniformConstant 6(float)
|
||||
35(d): 34(ptr) Variable UniformConstant
|
||||
37: 6(float) Constant 1082549862
|
||||
38: TypeBool
|
||||
42: 6(float) Constant 1067030938
|
||||
45: 6(float) Constant 1083179008
|
||||
53: 6(float) Constant 1081711002
|
||||
57: TypePointer Input 7(fvec4)
|
||||
58(BaseColor): 57(ptr) Variable Input
|
||||
68: TypePointer Output 7(fvec4)
|
||||
69(gl_FragColor): 68(ptr) Variable Output
|
||||
75: TypePointer UniformConstant 7(fvec4)
|
||||
76(bigColor): 75(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
55(color): 8(ptr) Variable Function
|
||||
58(param): 8(ptr) Variable Function
|
||||
63(f): 25(ptr) Variable Function
|
||||
65(g): 25(ptr) Variable Function
|
||||
56(color): 8(ptr) Variable Function
|
||||
59(param): 8(ptr) Variable Function
|
||||
64(f): 25(ptr) Variable Function
|
||||
66(g): 25(ptr) Variable Function
|
||||
Store 21(h) 22
|
||||
59: 7(fvec4) Load 57(BaseColor)
|
||||
Store 58(param) 59
|
||||
60: 6(float) FunctionCall 11(foo(vf4;) 58(param)
|
||||
61: 7(fvec4) CompositeConstruct 60 60 60 60
|
||||
Store 55(color) 61
|
||||
62: 2 FunctionCall 13(bar()
|
||||
64: 6(float) FunctionCall 16(unreachableReturn()
|
||||
Store 63(f) 64
|
||||
66: 6(float) FunctionCall 18(missingReturn()
|
||||
Store 65(g) 66
|
||||
69: 7(fvec4) Load 55(color)
|
||||
70: 6(float) Load 63(f)
|
||||
71: 7(fvec4) VectorTimesScalar 69 70
|
||||
72: 6(float) Load 21(h)
|
||||
73: 7(fvec4) VectorTimesScalar 71 72
|
||||
Store 68(gl_FragColor) 73
|
||||
60: 7(fvec4) Load 58(BaseColor)
|
||||
Store 59(param) 60
|
||||
61: 6(float) FunctionCall 11(foo(vf4;) 59(param)
|
||||
62: 7(fvec4) CompositeConstruct 61 61 61 61
|
||||
Store 56(color) 62
|
||||
63: 2 FunctionCall 13(bar()
|
||||
65: 6(float) FunctionCall 16(unreachableReturn()
|
||||
Store 64(f) 65
|
||||
67: 6(float) FunctionCall 18(missingReturn()
|
||||
Store 66(g) 67
|
||||
70: 7(fvec4) Load 56(color)
|
||||
71: 6(float) Load 64(f)
|
||||
72: 7(fvec4) VectorTimesScalar 70 71
|
||||
73: 6(float) Load 21(h)
|
||||
74: 7(fvec4) VectorTimesScalar 72 73
|
||||
Store 69(gl_FragColor) 74
|
||||
Return
|
||||
FunctionEnd
|
||||
11(foo(vf4;): 6(float) Function None 9
|
||||
@@ -98,29 +98,29 @@ Linked fragment stage:
|
||||
FunctionEnd
|
||||
16(unreachableReturn(): 6(float) Function None 15
|
||||
17: Label
|
||||
35: 6(float) Load 34(d)
|
||||
38: 37(bool) FOrdLessThan 35 36
|
||||
SelectionMerge 40 None
|
||||
BranchConditional 38 39 43
|
||||
39: Label
|
||||
ReturnValue 41
|
||||
43: Label
|
||||
ReturnValue 44
|
||||
40: Label
|
||||
46: 6(float) Undef
|
||||
ReturnValue 46
|
||||
36: 6(float) Load 35(d)
|
||||
39: 38(bool) FOrdLessThan 36 37
|
||||
SelectionMerge 41 None
|
||||
BranchConditional 39 40 44
|
||||
40: Label
|
||||
ReturnValue 42
|
||||
44: Label
|
||||
ReturnValue 45
|
||||
41: Label
|
||||
47: 6(float) Undef
|
||||
ReturnValue 47
|
||||
FunctionEnd
|
||||
18(missingReturn(): 6(float) Function None 15
|
||||
19: Label
|
||||
47: 6(float) Load 34(d)
|
||||
48: 37(bool) FOrdLessThan 47 44
|
||||
SelectionMerge 50 None
|
||||
BranchConditional 48 49 50
|
||||
49: Label
|
||||
51: 6(float) Load 34(d)
|
||||
Store 21(h) 51
|
||||
ReturnValue 52
|
||||
50: Label
|
||||
54: 6(float) Undef
|
||||
ReturnValue 54
|
||||
48: 6(float) Load 35(d)
|
||||
49: 38(bool) FOrdLessThan 48 45
|
||||
SelectionMerge 51 None
|
||||
BranchConditional 49 50 51
|
||||
50: Label
|
||||
52: 6(float) Load 35(d)
|
||||
Store 21(h) 52
|
||||
ReturnValue 53
|
||||
51: Label
|
||||
55: 6(float) Undef
|
||||
ReturnValue 55
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user