Skip to content

Commit 873e871

Browse files
committed
C++: Handle more cases in arrayReadStep.
1 parent 73cd5ce commit 873e871

File tree

8 files changed

+222
-166
lines changed

8 files changed

+222
-166
lines changed

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,17 +355,28 @@ private class ArrayToPointerConvertInstruction extends ConvertInstruction {
355355
}
356356
}
357357

358+
private Instruction skipOneCopyValueInstruction(Instruction instr) {
359+
not instr instanceof CopyValueInstruction and result = instr
360+
or
361+
result = instr.(CopyValueInstruction).getUnary()
362+
}
363+
364+
private Instruction skipCopyValueInstructions(Instruction instr) {
365+
result = skipOneCopyValueInstruction*(instr) and not result instanceof CopyValueInstruction
366+
}
367+
358368
private predicate arrayReadStep(Node node1, ArrayContent a, Node node2) {
359369
a = TArrayContent() and
360370
// Explicit dereferences such as `*p` or `p[i]` where `p` is a pointer or array.
361-
exists(LoadInstruction load |
371+
exists(LoadInstruction load, Instruction address |
362372
load.getSourceValueOperand().isDefinitionInexact() and
363373
node1.asInstruction() = load.getSourceValueOperand().getAnyDef() and
364374
load = node2.asInstruction() and
375+
address = skipCopyValueInstructions(load.getSourceAddress()) and
365376
(
366-
load.getSourceAddress() instanceof LoadInstruction or
367-
load.getSourceAddress() instanceof ArrayToPointerConvertInstruction or
368-
load.getSourceAddress() instanceof PointerAddInstruction
377+
address instanceof LoadInstruction or
378+
address instanceof ArrayToPointerConvertInstruction or
379+
address instanceof PointerOffsetInstruction
369380
)
370381
)
371382
}

cpp/ql/test/library-tests/dataflow/fields/aliasing.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,21 @@ void pointer_deref(int* xs) {
122122
sink(xs[0]); // $f-:ast $ir
123123
}
124124

125+
void pointer_deref_sub(int* xs) {
126+
taint_a_ptr(xs - 2);
127+
sink(*(xs - 2)); // $f-:ast $ir
128+
}
129+
130+
void pointer_many_addrof_and_deref(int* xs) {
131+
taint_a_ptr(xs);
132+
sink(*&*&*xs); // $f-:ast $ir
133+
}
134+
135+
void pointer_unary_plus(int* xs) {
136+
taint_a_ptr(+xs);
137+
sink(*+xs); // $f-:ast $ir
138+
}
139+
125140
void pointer_member_index(S_with_pointer s) {
126141
taint_a_ptr(s.data);
127142
// `s.data` is points to all-aliased-memory

cpp/ql/test/library-tests/dataflow/fields/flow-diff.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
| aliasing.cpp:86:10:86:19 | call to user_input | aliasing.cpp:87:12:87:13 | m1 | IR only |
2323
| aliasing.cpp:98:10:98:19 | call to user_input | aliasing.cpp:102:8:102:10 | * ... | IR only |
2424
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:122:8:122:12 | access to array | IR only |
25+
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:127:8:127:16 | * ... | IR only |
26+
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:132:8:132:14 | * ... | IR only |
27+
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:137:8:137:11 | * ... | IR only |
2528
| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:8:8:8:13 | access to array | AST only |
2629
| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:17:8:17:13 | access to array | AST only |
2730
| arrays.cpp:36:26:36:35 | call to user_input | arrays.cpp:38:24:38:27 | data | AST only |

cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected

Lines changed: 64 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -65,29 +65,38 @@ edges
6565
| aliasing.cpp:98:10:98:19 | call to user_input | aliasing.cpp:98:3:98:21 | Store |
6666
| aliasing.cpp:100:14:100:14 | Store [m1] | aliasing.cpp:102:8:102:10 | * ... |
6767
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:121:15:121:16 | taint_a_ptr output argument [array content] |
68-
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:143:15:143:20 | taint_a_ptr output argument [array content] |
69-
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:149:15:149:20 | taint_a_ptr output argument [array content] |
70-
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:160:15:160:22 | taint_a_ptr output argument [array content] |
71-
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:172:15:172:22 | taint_a_ptr output argument [array content] |
72-
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:185:15:185:24 | taint_a_ptr output argument [array content] |
68+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:126:15:126:20 | taint_a_ptr output argument [array content] |
69+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:131:15:131:16 | taint_a_ptr output argument [array content] |
70+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:136:15:136:17 | taint_a_ptr output argument [array content] |
71+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:158:15:158:20 | taint_a_ptr output argument [array content] |
72+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:164:15:164:20 | taint_a_ptr output argument [array content] |
73+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:175:15:175:22 | taint_a_ptr output argument [array content] |
74+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:187:15:187:22 | taint_a_ptr output argument [array content] |
75+
| aliasing.cpp:106:3:106:20 | Chi [array content] | aliasing.cpp:200:15:200:24 | taint_a_ptr output argument [array content] |
7376
| aliasing.cpp:106:3:106:20 | Store | aliasing.cpp:106:3:106:20 | Chi [array content] |
7477
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:106:3:106:20 | Store |
7578
| aliasing.cpp:121:15:121:16 | Chi [array content] | aliasing.cpp:122:8:122:12 | access to array |
7679
| aliasing.cpp:121:15:121:16 | taint_a_ptr output argument [array content] | aliasing.cpp:121:15:121:16 | Chi [array content] |
77-
| aliasing.cpp:143:15:143:20 | Chi [array content] | aliasing.cpp:144:8:144:14 | * ... |
78-
| aliasing.cpp:143:15:143:20 | taint_a_ptr output argument [array content] | aliasing.cpp:143:15:143:20 | Chi [array content] |
79-
| aliasing.cpp:149:15:149:20 | Chi [array content] | aliasing.cpp:150:8:150:16 | access to array |
80-
| aliasing.cpp:149:15:149:20 | taint_a_ptr output argument [array content] | aliasing.cpp:149:15:149:20 | Chi [array content] |
81-
| aliasing.cpp:160:15:160:22 | Chi | aliasing.cpp:160:15:160:22 | Chi [m1] |
82-
| aliasing.cpp:160:15:160:22 | Chi [m1] | aliasing.cpp:161:13:161:14 | m1 |
83-
| aliasing.cpp:160:15:160:22 | taint_a_ptr output argument [array content] | aliasing.cpp:160:15:160:22 | Chi |
84-
| aliasing.cpp:172:15:172:22 | Chi | aliasing.cpp:172:15:172:22 | Chi [m1] |
85-
| aliasing.cpp:172:15:172:22 | Chi [m1] | aliasing.cpp:173:13:173:14 | Store [m1] |
86-
| aliasing.cpp:172:15:172:22 | taint_a_ptr output argument [array content] | aliasing.cpp:172:15:172:22 | Chi |
87-
| aliasing.cpp:173:13:173:14 | Store [m1] | aliasing.cpp:174:15:174:16 | m1 |
88-
| aliasing.cpp:185:15:185:24 | Chi | aliasing.cpp:185:15:185:24 | Chi [m1] |
89-
| aliasing.cpp:185:15:185:24 | Chi [m1] | aliasing.cpp:186:15:186:16 | m1 |
90-
| aliasing.cpp:185:15:185:24 | taint_a_ptr output argument [array content] | aliasing.cpp:185:15:185:24 | Chi |
80+
| aliasing.cpp:126:15:126:20 | Chi [array content] | aliasing.cpp:127:8:127:16 | * ... |
81+
| aliasing.cpp:126:15:126:20 | taint_a_ptr output argument [array content] | aliasing.cpp:126:15:126:20 | Chi [array content] |
82+
| aliasing.cpp:131:15:131:16 | Chi [array content] | aliasing.cpp:132:8:132:14 | * ... |
83+
| aliasing.cpp:131:15:131:16 | taint_a_ptr output argument [array content] | aliasing.cpp:131:15:131:16 | Chi [array content] |
84+
| aliasing.cpp:136:15:136:17 | Chi [array content] | aliasing.cpp:137:8:137:11 | * ... |
85+
| aliasing.cpp:136:15:136:17 | taint_a_ptr output argument [array content] | aliasing.cpp:136:15:136:17 | Chi [array content] |
86+
| aliasing.cpp:158:15:158:20 | Chi [array content] | aliasing.cpp:159:8:159:14 | * ... |
87+
| aliasing.cpp:158:15:158:20 | taint_a_ptr output argument [array content] | aliasing.cpp:158:15:158:20 | Chi [array content] |
88+
| aliasing.cpp:164:15:164:20 | Chi [array content] | aliasing.cpp:165:8:165:16 | access to array |
89+
| aliasing.cpp:164:15:164:20 | taint_a_ptr output argument [array content] | aliasing.cpp:164:15:164:20 | Chi [array content] |
90+
| aliasing.cpp:175:15:175:22 | Chi | aliasing.cpp:175:15:175:22 | Chi [m1] |
91+
| aliasing.cpp:175:15:175:22 | Chi [m1] | aliasing.cpp:176:13:176:14 | m1 |
92+
| aliasing.cpp:175:15:175:22 | taint_a_ptr output argument [array content] | aliasing.cpp:175:15:175:22 | Chi |
93+
| aliasing.cpp:187:15:187:22 | Chi | aliasing.cpp:187:15:187:22 | Chi [m1] |
94+
| aliasing.cpp:187:15:187:22 | Chi [m1] | aliasing.cpp:188:13:188:14 | Store [m1] |
95+
| aliasing.cpp:187:15:187:22 | taint_a_ptr output argument [array content] | aliasing.cpp:187:15:187:22 | Chi |
96+
| aliasing.cpp:188:13:188:14 | Store [m1] | aliasing.cpp:189:15:189:16 | m1 |
97+
| aliasing.cpp:200:15:200:24 | Chi | aliasing.cpp:200:15:200:24 | Chi [m1] |
98+
| aliasing.cpp:200:15:200:24 | Chi [m1] | aliasing.cpp:201:15:201:16 | m1 |
99+
| aliasing.cpp:200:15:200:24 | taint_a_ptr output argument [array content] | aliasing.cpp:200:15:200:24 | Chi |
91100
| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array |
92101
| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... |
93102
| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... |
@@ -314,25 +323,34 @@ nodes
314323
| aliasing.cpp:121:15:121:16 | Chi [array content] | semmle.label | Chi [array content] |
315324
| aliasing.cpp:121:15:121:16 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
316325
| aliasing.cpp:122:8:122:12 | access to array | semmle.label | access to array |
317-
| aliasing.cpp:143:15:143:20 | Chi [array content] | semmle.label | Chi [array content] |
318-
| aliasing.cpp:143:15:143:20 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
319-
| aliasing.cpp:144:8:144:14 | * ... | semmle.label | * ... |
320-
| aliasing.cpp:149:15:149:20 | Chi [array content] | semmle.label | Chi [array content] |
321-
| aliasing.cpp:149:15:149:20 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
322-
| aliasing.cpp:150:8:150:16 | access to array | semmle.label | access to array |
323-
| aliasing.cpp:160:15:160:22 | Chi | semmle.label | Chi |
324-
| aliasing.cpp:160:15:160:22 | Chi [m1] | semmle.label | Chi [m1] |
325-
| aliasing.cpp:160:15:160:22 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
326-
| aliasing.cpp:161:13:161:14 | m1 | semmle.label | m1 |
327-
| aliasing.cpp:172:15:172:22 | Chi | semmle.label | Chi |
328-
| aliasing.cpp:172:15:172:22 | Chi [m1] | semmle.label | Chi [m1] |
329-
| aliasing.cpp:172:15:172:22 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
330-
| aliasing.cpp:173:13:173:14 | Store [m1] | semmle.label | Store [m1] |
331-
| aliasing.cpp:174:15:174:16 | m1 | semmle.label | m1 |
332-
| aliasing.cpp:185:15:185:24 | Chi | semmle.label | Chi |
333-
| aliasing.cpp:185:15:185:24 | Chi [m1] | semmle.label | Chi [m1] |
334-
| aliasing.cpp:185:15:185:24 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
335-
| aliasing.cpp:186:15:186:16 | m1 | semmle.label | m1 |
326+
| aliasing.cpp:126:15:126:20 | Chi [array content] | semmle.label | Chi [array content] |
327+
| aliasing.cpp:126:15:126:20 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
328+
| aliasing.cpp:127:8:127:16 | * ... | semmle.label | * ... |
329+
| aliasing.cpp:131:15:131:16 | Chi [array content] | semmle.label | Chi [array content] |
330+
| aliasing.cpp:131:15:131:16 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
331+
| aliasing.cpp:132:8:132:14 | * ... | semmle.label | * ... |
332+
| aliasing.cpp:136:15:136:17 | Chi [array content] | semmle.label | Chi [array content] |
333+
| aliasing.cpp:136:15:136:17 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
334+
| aliasing.cpp:137:8:137:11 | * ... | semmle.label | * ... |
335+
| aliasing.cpp:158:15:158:20 | Chi [array content] | semmle.label | Chi [array content] |
336+
| aliasing.cpp:158:15:158:20 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
337+
| aliasing.cpp:159:8:159:14 | * ... | semmle.label | * ... |
338+
| aliasing.cpp:164:15:164:20 | Chi [array content] | semmle.label | Chi [array content] |
339+
| aliasing.cpp:164:15:164:20 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
340+
| aliasing.cpp:165:8:165:16 | access to array | semmle.label | access to array |
341+
| aliasing.cpp:175:15:175:22 | Chi | semmle.label | Chi |
342+
| aliasing.cpp:175:15:175:22 | Chi [m1] | semmle.label | Chi [m1] |
343+
| aliasing.cpp:175:15:175:22 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
344+
| aliasing.cpp:176:13:176:14 | m1 | semmle.label | m1 |
345+
| aliasing.cpp:187:15:187:22 | Chi | semmle.label | Chi |
346+
| aliasing.cpp:187:15:187:22 | Chi [m1] | semmle.label | Chi [m1] |
347+
| aliasing.cpp:187:15:187:22 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
348+
| aliasing.cpp:188:13:188:14 | Store [m1] | semmle.label | Store [m1] |
349+
| aliasing.cpp:189:15:189:16 | m1 | semmle.label | m1 |
350+
| aliasing.cpp:200:15:200:24 | Chi | semmle.label | Chi |
351+
| aliasing.cpp:200:15:200:24 | Chi [m1] | semmle.label | Chi [m1] |
352+
| aliasing.cpp:200:15:200:24 | taint_a_ptr output argument [array content] | semmle.label | taint_a_ptr output argument [array content] |
353+
| aliasing.cpp:201:15:201:16 | m1 | semmle.label | m1 |
336354
| arrays.cpp:6:12:6:21 | call to user_input | semmle.label | call to user_input |
337355
| arrays.cpp:7:8:7:13 | access to array | semmle.label | access to array |
338356
| arrays.cpp:9:8:9:11 | * ... | semmle.label | * ... |
@@ -507,11 +525,14 @@ nodes
507525
| aliasing.cpp:93:12:93:13 | m1 | aliasing.cpp:92:12:92:21 | call to user_input | aliasing.cpp:93:12:93:13 | m1 | m1 flows from $@ | aliasing.cpp:92:12:92:21 | call to user_input | call to user_input |
508526
| aliasing.cpp:102:8:102:10 | * ... | aliasing.cpp:98:10:98:19 | call to user_input | aliasing.cpp:102:8:102:10 | * ... | * ... flows from $@ | aliasing.cpp:98:10:98:19 | call to user_input | call to user_input |
509527
| aliasing.cpp:122:8:122:12 | access to array | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:122:8:122:12 | access to array | access to array flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
510-
| aliasing.cpp:144:8:144:14 | * ... | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:144:8:144:14 | * ... | * ... flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
511-
| aliasing.cpp:150:8:150:16 | access to array | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:150:8:150:16 | access to array | access to array flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
512-
| aliasing.cpp:161:13:161:14 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:161:13:161:14 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
513-
| aliasing.cpp:174:15:174:16 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:174:15:174:16 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
514-
| aliasing.cpp:186:15:186:16 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:186:15:186:16 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
528+
| aliasing.cpp:127:8:127:16 | * ... | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:127:8:127:16 | * ... | * ... flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
529+
| aliasing.cpp:132:8:132:14 | * ... | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:132:8:132:14 | * ... | * ... flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
530+
| aliasing.cpp:137:8:137:11 | * ... | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:137:8:137:11 | * ... | * ... flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
531+
| aliasing.cpp:159:8:159:14 | * ... | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:159:8:159:14 | * ... | * ... flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
532+
| aliasing.cpp:165:8:165:16 | access to array | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:165:8:165:16 | access to array | access to array flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
533+
| aliasing.cpp:176:13:176:14 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:176:13:176:14 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
534+
| aliasing.cpp:189:15:189:16 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:189:15:189:16 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
535+
| aliasing.cpp:201:15:201:16 | m1 | aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:201:15:201:16 | m1 | m1 flows from $@ | aliasing.cpp:106:9:106:18 | call to user_input | call to user_input |
515536
| arrays.cpp:7:8:7:13 | access to array | arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array | access to array flows from $@ | arrays.cpp:6:12:6:21 | call to user_input | call to user_input |
516537
| arrays.cpp:9:8:9:11 | * ... | arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... | * ... flows from $@ | arrays.cpp:6:12:6:21 | call to user_input | call to user_input |
517538
| arrays.cpp:10:8:10:15 | * ... | arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... | * ... flows from $@ | arrays.cpp:6:12:6:21 | call to user_input | call to user_input |

cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -161,25 +161,28 @@
161161
| aliasing.cpp:106:3:106:5 | * ... | AST only |
162162
| aliasing.cpp:111:15:111:19 | & ... | AST only |
163163
| aliasing.cpp:121:15:121:16 | xs | AST only |
164-
| aliasing.cpp:126:15:126:15 | s | AST only |
165-
| aliasing.cpp:126:17:126:20 | data | AST only |
166-
| aliasing.cpp:132:15:132:22 | & ... | AST only |
167-
| aliasing.cpp:143:15:143:15 | s | AST only |
168-
| aliasing.cpp:143:17:143:20 | data | AST only |
169-
| aliasing.cpp:149:15:149:15 | s | AST only |
170-
| aliasing.cpp:149:17:149:20 | data | AST only |
171-
| aliasing.cpp:160:15:160:22 | & ... | AST only |
172-
| aliasing.cpp:160:16:160:17 | s2 | AST only |
173-
| aliasing.cpp:166:15:166:22 | & ... | AST only |
174-
| aliasing.cpp:166:16:166:17 | s2 | AST only |
175-
| aliasing.cpp:172:15:172:22 | & ... | AST only |
176-
| aliasing.cpp:172:16:172:17 | s2 | AST only |
177-
| aliasing.cpp:179:15:179:22 | & ... | AST only |
178-
| aliasing.cpp:179:16:179:17 | s2 | AST only |
179-
| aliasing.cpp:185:15:185:24 | & ... | AST only |
180-
| aliasing.cpp:185:16:185:18 | ps2 | AST only |
181-
| aliasing.cpp:190:15:190:24 | & ... | AST only |
182-
| aliasing.cpp:190:16:190:18 | ps2 | AST only |
164+
| aliasing.cpp:126:15:126:20 | ... - ... | AST only |
165+
| aliasing.cpp:131:15:131:16 | xs | AST only |
166+
| aliasing.cpp:136:15:136:17 | + ... | AST only |
167+
| aliasing.cpp:141:15:141:15 | s | AST only |
168+
| aliasing.cpp:141:17:141:20 | data | AST only |
169+
| aliasing.cpp:147:15:147:22 | & ... | AST only |
170+
| aliasing.cpp:158:15:158:15 | s | AST only |
171+
| aliasing.cpp:158:17:158:20 | data | AST only |
172+
| aliasing.cpp:164:15:164:15 | s | AST only |
173+
| aliasing.cpp:164:17:164:20 | data | AST only |
174+
| aliasing.cpp:175:15:175:22 | & ... | AST only |
175+
| aliasing.cpp:175:16:175:17 | s2 | AST only |
176+
| aliasing.cpp:181:15:181:22 | & ... | AST only |
177+
| aliasing.cpp:181:16:181:17 | s2 | AST only |
178+
| aliasing.cpp:187:15:187:22 | & ... | AST only |
179+
| aliasing.cpp:187:16:187:17 | s2 | AST only |
180+
| aliasing.cpp:194:15:194:22 | & ... | AST only |
181+
| aliasing.cpp:194:16:194:17 | s2 | AST only |
182+
| aliasing.cpp:200:15:200:24 | & ... | AST only |
183+
| aliasing.cpp:200:16:200:18 | ps2 | AST only |
184+
| aliasing.cpp:205:15:205:24 | & ... | AST only |
185+
| aliasing.cpp:205:16:205:18 | ps2 | AST only |
183186
| arrays.cpp:6:3:6:8 | access to array | AST only |
184187
| arrays.cpp:6:3:6:23 | arr | IR only |
185188
| arrays.cpp:15:3:15:10 | * ... | AST only |

0 commit comments

Comments
 (0)