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:
Dejan Mircevski
2016-01-19 21:13:38 -05:00
parent 33782795d9
commit ed55bcd9f8
17 changed files with 1233 additions and 1252 deletions

View File

@@ -7,26 +7,26 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 143
// Id's are bound by 144
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 23
EntryPoint Fragment 4 "main" 12 24
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"
Name 8 "foo("
Name 12 "of1"
Name 23 "of4"
Name 26 "ub"
Name 30 "ui"
Name 40 "uba"
Name 109 "uf"
Name 136 "uiv4"
Name 138 "uv4"
Name 141 "ub41"
Name 142 "ub42"
Name 24 "of4"
Name 27 "ub"
Name 31 "ui"
Name 41 "uba"
Name 110 "uf"
Name 137 "uiv4"
Name 139 "uv4"
Name 142 "ub41"
Name 143 "ub42"
2: TypeVoid
3: TypeFunction 2
6: TypeBool
@@ -36,190 +36,190 @@ Linked fragment stage:
12(of1): 11(ptr) Variable Output
14: 10(float) Constant 1065353216
17: 10(float) Constant 1092616192
20: 10(float) Constant 0
21: TypeVector 10(float) 4
22: TypePointer Output 21(fvec4)
23(of4): 22(ptr) Variable Output
24: 21(fvec4) ConstantComposite 20 20 20 20
25: TypePointer UniformConstant 6(bool)
26(ub): 25(ptr) Variable UniformConstant
28: TypeInt 32 1
29: TypePointer UniformConstant 28(int)
30(ui): 29(ptr) Variable UniformConstant
32: 28(int) Constant 2
40(uba): 25(ptr) Variable UniformConstant
108: TypePointer UniformConstant 10(float)
109(uf): 108(ptr) Variable UniformConstant
112: 10(float) Constant 1082130432
134: TypeVector 28(int) 4
135: TypePointer UniformConstant 134(ivec4)
136(uiv4): 135(ptr) Variable UniformConstant
137: TypePointer UniformConstant 21(fvec4)
138(uv4): 137(ptr) Variable UniformConstant
139: TypeVector 6(bool) 4
140: TypePointer UniformConstant 139(bvec4)
141(ub41): 140(ptr) Variable UniformConstant
142(ub42): 140(ptr) Variable UniformConstant
21: 10(float) Constant 0
22: TypeVector 10(float) 4
23: TypePointer Output 22(fvec4)
24(of4): 23(ptr) Variable Output
25: 22(fvec4) ConstantComposite 21 21 21 21
26: TypePointer UniformConstant 6(bool)
27(ub): 26(ptr) Variable UniformConstant
29: TypeInt 32 1
30: TypePointer UniformConstant 29(int)
31(ui): 30(ptr) Variable UniformConstant
33: 29(int) Constant 2
41(uba): 26(ptr) Variable UniformConstant
109: TypePointer UniformConstant 10(float)
110(uf): 109(ptr) Variable UniformConstant
113: 10(float) Constant 1082130432
135: TypeVector 29(int) 4
136: TypePointer UniformConstant 135(ivec4)
137(uiv4): 136(ptr) Variable UniformConstant
138: TypePointer UniformConstant 22(fvec4)
139(uv4): 138(ptr) Variable UniformConstant
140: TypeVector 6(bool) 4
141: TypePointer UniformConstant 140(bvec4)
142(ub41): 141(ptr) Variable UniformConstant
143(ub42): 141(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
Store 12(of1) 20
Store 23(of4) 24
27: 6(bool) Load 26(ub)
31: 28(int) Load 30(ui)
33: 6(bool) SGreaterThan 31 32
34: 6(bool) LogicalOr 27 33
SelectionMerge 36 None
BranchConditional 34 35 36
35: Label
37: 10(float) Load 12(of1)
38: 10(float) FAdd 37 14
Store 12(of1) 38
Branch 36
36: Label
39: 6(bool) Load 26(ub)
41: 6(bool) Load 40(uba)
42: 6(bool) LogicalNot 41
43: 6(bool) LogicalAnd 39 42
SelectionMerge 45 None
BranchConditional 43 44 45
44: Label
46: 10(float) Load 12(of1)
47: 10(float) FAdd 46 14
Store 12(of1) 47
Branch 45
45: Label
48: 6(bool) Load 26(ub)
49: 6(bool) LogicalNot 48
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
52: 6(bool) FunctionCall 8(foo()
Branch 51
51: Label
53: 6(bool) Phi 48 45 52 50
SelectionMerge 55 None
BranchConditional 53 54 55
54: Label
56: 10(float) Load 12(of1)
57: 10(float) FAdd 56 14
Store 12(of1) 57
Branch 55
55: Label
58: 6(bool) Load 26(ub)
SelectionMerge 60 None
BranchConditional 58 59 60
59: Label
61: 6(bool) FunctionCall 8(foo()
Branch 60
60: Label
62: 6(bool) Phi 58 55 61 59
SelectionMerge 64 None
BranchConditional 62 63 64
63: Label
65: 10(float) Load 12(of1)
66: 10(float) FAdd 65 14
Store 12(of1) 66
Branch 64
64: Label
67: 6(bool) FunctionCall 8(foo()
68: 6(bool) Load 26(ub)
69: 6(bool) LogicalOr 67 68
SelectionMerge 71 None
BranchConditional 69 70 71
70: Label
72: 10(float) Load 12(of1)
73: 10(float) FAdd 72 14
Store 12(of1) 73
Branch 71
71: Label
74: 6(bool) FunctionCall 8(foo()
75: 6(bool) Load 26(ub)
76: 6(bool) LogicalAnd 74 75
SelectionMerge 78 None
BranchConditional 76 77 78
77: Label
79: 10(float) Load 12(of1)
80: 10(float) FAdd 79 14
Store 12(of1) 80
Branch 78
78: Label
81: 6(bool) Load 26(ub)
82: 6(bool) LogicalNot 81
SelectionMerge 84 None
BranchConditional 82 83 84
83: Label
85: 10(float) Load 12(of1)
86: 10(float) FAdd 85 14
Store 12(of1) 86
87: 6(bool) FOrdGreaterThan 86 14
Branch 84
84: Label
88: 6(bool) Phi 81 78 87 83
SelectionMerge 90 None
BranchConditional 88 89 90
89: Label
91: 21(fvec4) Load 23(of4)
92: 21(fvec4) CompositeConstruct 14 14 14 14
93: 21(fvec4) FAdd 91 92
Store 23(of4) 93
Branch 90
90: Label
94: 10(float) Load 12(of1)
95: 10(float) FAdd 94 14
Store 12(of1) 95
96: 6(bool) FOrdGreaterThan 95 14
97: 6(bool) Load 26(ub)
98: 6(bool) LogicalOr 96 97
SelectionMerge 100 None
BranchConditional 98 99 100
99: Label
101: 21(fvec4) Load 23(of4)
102: 21(fvec4) CompositeConstruct 14 14 14 14
103: 21(fvec4) FAdd 101 102
Store 23(of4) 103
Branch 100
100: Label
104: 6(bool) Load 26(ub)
105: 6(bool) LogicalNot 104
SelectionMerge 107 None
BranchConditional 105 106 107
106: Label
110: 10(float) Load 109(uf)
111: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 110
113: 10(float) FMul 111 112
114: 10(float) Load 12(of1)
115: 6(bool) FOrdGreaterThan 113 114
Branch 107
107: Label
116: 6(bool) Phi 104 100 115 106
SelectionMerge 118 None
BranchConditional 116 117 118
117: Label
119: 10(float) Load 12(of1)
120: 10(float) FAdd 119 14
Store 12(of1) 120
Branch 118
118: Label
121: 6(bool) Load 26(ub)
SelectionMerge 123 None
BranchConditional 121 122 123
122: Label
124: 10(float) Load 109(uf)
125: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 124
126: 10(float) FMul 125 112
127: 10(float) Load 12(of1)
128: 6(bool) FOrdGreaterThan 126 127
Branch 123
123: Label
129: 6(bool) Phi 121 118 128 122
SelectionMerge 131 None
BranchConditional 129 130 131
130: Label
132: 10(float) Load 12(of1)
133: 10(float) FAdd 132 14
Store 12(of1) 133
Branch 131
131: Label
Store 12(of1) 21
Store 24(of4) 25
28: 6(bool) Load 27(ub)
32: 29(int) Load 31(ui)
34: 6(bool) SGreaterThan 32 33
35: 6(bool) LogicalOr 28 34
SelectionMerge 37 None
BranchConditional 35 36 37
36: Label
38: 10(float) Load 12(of1)
39: 10(float) FAdd 38 14
Store 12(of1) 39
Branch 37
37: Label
40: 6(bool) Load 27(ub)
42: 6(bool) Load 41(uba)
43: 6(bool) LogicalNot 42
44: 6(bool) LogicalAnd 40 43
SelectionMerge 46 None
BranchConditional 44 45 46
45: Label
47: 10(float) Load 12(of1)
48: 10(float) FAdd 47 14
Store 12(of1) 48
Branch 46
46: Label
49: 6(bool) Load 27(ub)
50: 6(bool) LogicalNot 49
SelectionMerge 52 None
BranchConditional 50 51 52
51: Label
53: 6(bool) FunctionCall 8(foo()
Branch 52
52: Label
54: 6(bool) Phi 49 46 53 51
SelectionMerge 56 None
BranchConditional 54 55 56
55: Label
57: 10(float) Load 12(of1)
58: 10(float) FAdd 57 14
Store 12(of1) 58
Branch 56
56: Label
59: 6(bool) Load 27(ub)
SelectionMerge 61 None
BranchConditional 59 60 61
60: Label
62: 6(bool) FunctionCall 8(foo()
Branch 61
61: Label
63: 6(bool) Phi 59 56 62 60
SelectionMerge 65 None
BranchConditional 63 64 65
64: Label
66: 10(float) Load 12(of1)
67: 10(float) FAdd 66 14
Store 12(of1) 67
Branch 65
65: Label
68: 6(bool) FunctionCall 8(foo()
69: 6(bool) Load 27(ub)
70: 6(bool) LogicalOr 68 69
SelectionMerge 72 None
BranchConditional 70 71 72
71: Label
73: 10(float) Load 12(of1)
74: 10(float) FAdd 73 14
Store 12(of1) 74
Branch 72
72: Label
75: 6(bool) FunctionCall 8(foo()
76: 6(bool) Load 27(ub)
77: 6(bool) LogicalAnd 75 76
SelectionMerge 79 None
BranchConditional 77 78 79
78: Label
80: 10(float) Load 12(of1)
81: 10(float) FAdd 80 14
Store 12(of1) 81
Branch 79
79: Label
82: 6(bool) Load 27(ub)
83: 6(bool) LogicalNot 82
SelectionMerge 85 None
BranchConditional 83 84 85
84: Label
86: 10(float) Load 12(of1)
87: 10(float) FAdd 86 14
Store 12(of1) 87
88: 6(bool) FOrdGreaterThan 87 14
Branch 85
85: Label
89: 6(bool) Phi 82 79 88 84
SelectionMerge 91 None
BranchConditional 89 90 91
90: Label
92: 22(fvec4) Load 24(of4)
93: 22(fvec4) CompositeConstruct 14 14 14 14
94: 22(fvec4) FAdd 92 93
Store 24(of4) 94
Branch 91
91: Label
95: 10(float) Load 12(of1)
96: 10(float) FAdd 95 14
Store 12(of1) 96
97: 6(bool) FOrdGreaterThan 96 14
98: 6(bool) Load 27(ub)
99: 6(bool) LogicalOr 97 98
SelectionMerge 101 None
BranchConditional 99 100 101
100: Label
102: 22(fvec4) Load 24(of4)
103: 22(fvec4) CompositeConstruct 14 14 14 14
104: 22(fvec4) FAdd 102 103
Store 24(of4) 104
Branch 101
101: Label
105: 6(bool) Load 27(ub)
106: 6(bool) LogicalNot 105
SelectionMerge 108 None
BranchConditional 106 107 108
107: Label
111: 10(float) Load 110(uf)
112: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 111
114: 10(float) FMul 112 113
115: 10(float) Load 12(of1)
116: 6(bool) FOrdGreaterThan 114 115
Branch 108
108: Label
117: 6(bool) Phi 105 101 116 107
SelectionMerge 119 None
BranchConditional 117 118 119
118: Label
120: 10(float) Load 12(of1)
121: 10(float) FAdd 120 14
Store 12(of1) 121
Branch 119
119: Label
122: 6(bool) Load 27(ub)
SelectionMerge 124 None
BranchConditional 122 123 124
123: Label
125: 10(float) Load 110(uf)
126: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 125
127: 10(float) FMul 126 113
128: 10(float) Load 12(of1)
129: 6(bool) FOrdGreaterThan 127 128
Branch 124
124: Label
130: 6(bool) Phi 122 119 129 123
SelectionMerge 132 None
BranchConditional 130 131 132
131: Label
133: 10(float) Load 12(of1)
134: 10(float) FAdd 133 14
Store 12(of1) 134
Branch 132
132: Label
Return
FunctionEnd
8(foo(): 6(bool) Function None 7