|
1 | 1 | private import cpp |
2 | 2 |
|
3 | | -private predicate fieldIsInitialized(Field field) { |
4 | | - exists(ClassAggregateLiteral initList | |
5 | | - initList.isInitialized(field) |
6 | | - ) or |
7 | | - exists(ConstructorFieldInit init | |
8 | | - field = init.getTarget() |
9 | | - ) |
10 | | -} |
11 | | - |
12 | | -private predicate elementIsInitialized(int elementIndex) { |
13 | | - exists(ArrayAggregateLiteral initList | |
14 | | - initList.isInitialized(elementIndex) |
15 | | - ) |
16 | | -} |
17 | | - |
18 | 3 | newtype TInstructionTag = |
19 | 4 | OnlyInstructionTag() or // Single instruction (not including implicit Load) |
20 | 5 | InitializeThisTag() or |
@@ -64,27 +49,13 @@ newtype TInstructionTag = |
64 | 49 | ThrowTag() or |
65 | 50 | UnwindTag() or |
66 | 51 | InitializerUninitializedTag() or |
67 | | - InitializerFieldAddressTag(Field field) { |
68 | | - fieldIsInitialized(field) |
69 | | - } or |
70 | | - InitializerFieldDefaultValueTag(Field field) { |
71 | | - fieldIsInitialized(field) |
72 | | - } or |
73 | | - InitializerFieldDefaultValueStoreTag(Field field) { |
74 | | - fieldIsInitialized(field) |
75 | | - } or |
76 | | - InitializerElementIndexTag(int elementIndex) { |
77 | | - elementIsInitialized(elementIndex) |
78 | | - } or |
79 | | - InitializerElementAddressTag(int elementIndex) { |
80 | | - elementIsInitialized(elementIndex) |
81 | | - } or |
82 | | - InitializerElementDefaultValueTag(int elementIndex) { |
83 | | - elementIsInitialized(elementIndex) |
84 | | - } or |
85 | | - InitializerElementDefaultValueStoreTag(int elementIndex) { |
86 | | - elementIsInitialized(elementIndex) |
87 | | - } or |
| 52 | + InitializerFieldAddressTag() or |
| 53 | + InitializerFieldDefaultValueTag() or |
| 54 | + InitializerFieldDefaultValueStoreTag() or |
| 55 | + InitializerElementIndexTag() or |
| 56 | + InitializerElementAddressTag() or |
| 57 | + InitializerElementDefaultValueTag() or |
| 58 | + InitializerElementDefaultValueStoreTag() or |
88 | 59 | AsmTag() or |
89 | 60 | AsmInputTag(int elementIndex) { |
90 | 61 | exists(AsmStmt asm | |
@@ -150,24 +121,13 @@ string getInstructionTagId(TInstructionTag tag) { |
150 | 121 | tag = CatchTag() and result = "Catch" or |
151 | 122 | tag = ThrowTag() and result = "Throw" or |
152 | 123 | tag = UnwindTag() and result = "Unwind" or |
153 | | - exists(Field field, Class cls, int index, string tagName | |
154 | | - field = cls.getCanonicalMember(index) and |
155 | | - ( |
156 | | - tag = InitializerFieldAddressTag(field) and tagName = "InitFieldAddr" or |
157 | | - tag = InitializerFieldDefaultValueTag(field) and tagName = "InitFieldDefVal" or |
158 | | - tag = InitializerFieldDefaultValueStoreTag(field) and tagName = "InitFieldDefValStore" |
159 | | - ) and |
160 | | - result = tagName + "(" + index + ")" |
161 | | - ) or |
162 | | - exists(int index, string tagName | |
163 | | - ( |
164 | | - tag = InitializerElementIndexTag(index) and tagName = "InitElemIndex" or |
165 | | - tag = InitializerElementAddressTag(index) and tagName = "InitElemAddr" or |
166 | | - tag = InitializerElementDefaultValueTag(index) and tagName = "InitElemDefVal" or |
167 | | - tag = InitializerElementDefaultValueStoreTag(index) and tagName = "InitElemDefValStore" |
168 | | - ) and |
169 | | - result = tagName + "(" + index + ")" |
170 | | - ) or |
| 124 | + tag = InitializerFieldAddressTag() and result = "InitFieldAddr" or |
| 125 | + tag = InitializerFieldDefaultValueTag() and result = "InitFieldDefVal" or |
| 126 | + tag = InitializerFieldDefaultValueStoreTag() and result = "InitFieldDefValStore" or |
| 127 | + tag = InitializerElementIndexTag() and result = "InitElemIndex" or |
| 128 | + tag = InitializerElementAddressTag() and result = "InitElemAddr" or |
| 129 | + tag = InitializerElementDefaultValueTag() and result = "InitElemDefVal" or |
| 130 | + tag = InitializerElementDefaultValueStoreTag() and result = "InitElemDefValStore" or |
171 | 131 | tag = AsmTag() and result = "Asm" or |
172 | 132 | exists(int index | |
173 | 133 | tag = AsmInputTag(index) and result = "AsmInputTag(" + index + ")" |
|
0 commit comments