Skip to content

Commit 6be6d26

Browse files
committed
C#: Add new SSA test
1 parent fd5b889 commit 6be6d26

File tree

10 files changed

+126
-0
lines changed

10 files changed

+126
-0
lines changed

csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,18 @@
154154
| Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | in | Test.cs:48:13:48:15 | access to parameter in |
155155
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | x | Test.cs:66:28:66:28 | access to parameter x |
156156
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | DivideByZeroException e | Test.cs:70:17:70:17 | access to local variable e |
157+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | b1 | Test.cs:80:13:80:14 | access to parameter b1 |
158+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | b2 | Test.cs:84:18:84:19 | access to parameter b2 |
159+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | b3 | Test.cs:90:13:90:14 | access to parameter b3 |
160+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | b4 | Test.cs:94:18:94:19 | access to parameter b4 |
161+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | b5 | Test.cs:102:13:102:14 | access to parameter b5 |
162+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | b6 | Test.cs:113:13:113:14 | access to parameter b6 |
163+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | Int32 x = ... | Test.cs:82:17:82:17 | access to local variable x |
164+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | Int32 x = ... | Test.cs:86:17:86:17 | access to local variable x |
165+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | Int32 x = ... | Test.cs:92:17:92:17 | access to local variable x |
166+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | Int32 x = ... | Test.cs:96:17:96:17 | access to local variable x |
167+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | Int32 x = ... | Test.cs:99:13:99:13 | access to local variable x |
168+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | ... = ... | Test.cs:109:17:109:17 | access to local variable x |
157169
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:20:9:20:34 | ... = ... | Tuples.cs:22:13:22:17 | access to field Field |
158170
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:26:9:26:33 | ... = ... | Tuples.cs:27:13:27:17 | access to field Field |
159171
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:26:9:26:33 | ... = ... | Tuples.cs:28:13:28:19 | access to field Field |

csharp/ql/test/library-tests/dataflow/ssa/ReadAdjacentRead.expected

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,13 @@
111111
| Test.cs:9:13:9:13 | y | Test.cs:25:20:25:20 | access to local variable y | Test.cs:43:20:43:20 | access to local variable y |
112112
| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | access to local variable i | Test.cs:36:18:36:18 | access to local variable i |
113113
| Test.cs:34:18:34:18 | i | Test.cs:36:18:36:18 | access to local variable i | Test.cs:34:33:34:33 | access to local variable i |
114+
| Test.cs:78:13:78:13 | x | Test.cs:82:17:82:17 | access to local variable x | Test.cs:92:17:92:17 | access to local variable x |
115+
| Test.cs:78:13:78:13 | x | Test.cs:82:17:82:17 | access to local variable x | Test.cs:96:17:96:17 | access to local variable x |
116+
| Test.cs:78:13:78:13 | x | Test.cs:82:17:82:17 | access to local variable x | Test.cs:99:13:99:13 | access to local variable x |
117+
| Test.cs:78:13:78:13 | x | Test.cs:86:17:86:17 | access to local variable x | Test.cs:92:17:92:17 | access to local variable x |
118+
| Test.cs:78:13:78:13 | x | Test.cs:86:17:86:17 | access to local variable x | Test.cs:96:17:96:17 | access to local variable x |
119+
| Test.cs:78:13:78:13 | x | Test.cs:86:17:86:17 | access to local variable x | Test.cs:99:13:99:13 | access to local variable x |
120+
| Test.cs:78:13:78:13 | x | Test.cs:92:17:92:17 | access to local variable x | Test.cs:99:13:99:13 | access to local variable x |
121+
| Test.cs:78:13:78:13 | x | Test.cs:96:17:96:17 | access to local variable x | Test.cs:99:13:99:13 | access to local variable x |
122+
| Test.cs:78:13:78:13 | x | Test.cs:99:13:99:13 | access to local variable x | Test.cs:104:17:104:17 | access to local variable x |
114123
| Tuples.cs:25:13:25:13 | t | Tuples.cs:26:17:26:17 | access to local variable t | Tuples.cs:28:13:28:13 | access to local variable t |

csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,5 @@
5757
| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:33:34:35 | SSA def(i) |
5858
| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:50:13:50:20 | SSA def(out) |
5959
| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:54:13:54:20 | SSA def(out) |
60+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) |
61+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) |

csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,15 @@
354354
| Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) |
355355
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) |
356356
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) |
357+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) |
358+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) |
359+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) |
360+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) |
361+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) |
362+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) |
363+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) |
364+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) |
365+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) |
357366
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) |
358367
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) |
359368
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) |

csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,14 @@
321321
| Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... |
322322
| Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x |
323323
| Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e |
324+
| Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | b1 |
325+
| Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | b2 |
326+
| Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | b3 |
327+
| Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:76:51:76:52 | b4 |
328+
| Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | b5 |
329+
| Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | b6 |
330+
| Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... |
331+
| Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... |
324332
| Tuples.cs:10:9:10:54 | SSA def(b) | Tuples.cs:10:9:10:54 | ... = ... |
325333
| Tuples.cs:10:9:10:54 | SSA def(s) | Tuples.cs:10:9:10:54 | ... = ... |
326334
| Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... |

csharp/ql/test/library-tests/dataflow/ssa/SsaDefLastRead.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,16 @@
271271
| Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:58:13:58:17 | access to field field |
272272
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:66:28:66:28 | access to parameter x |
273273
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:70:17:70:17 | access to local variable e |
274+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:80:13:80:14 | access to parameter b1 |
275+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:84:18:84:19 | access to parameter b2 |
276+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:90:13:90:14 | access to parameter b3 |
277+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:94:18:94:19 | access to parameter b4 |
278+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:102:13:102:14 | access to parameter b5 |
279+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:113:13:113:14 | access to parameter b6 |
280+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:99:13:99:13 | access to local variable x |
281+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:104:17:104:17 | access to local variable x |
282+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:109:17:109:17 | access to local variable x |
283+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:115:17:115:17 | access to local variable x |
274284
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:11:13:11:13 | access to local variable x |
275285
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:15:13:15:13 | access to local variable x |
276286
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:24:13:24:13 | access to local variable x |

csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,14 @@
227227
| Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... |
228228
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x |
229229
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e |
230+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | b1 |
231+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | b2 |
232+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | b3 |
233+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:76:51:76:52 | b4 |
234+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | b5 |
235+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | b6 |
236+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... |
237+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... |
230238
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... |
231239
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:14:9:14:32 | ... = ... |
232240
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:23:9:23:37 | ... = ... |

csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,20 @@
374374
| Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:58:13:58:17 | access to field field |
375375
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:66:28:66:28 | access to parameter x |
376376
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:70:17:70:17 | access to local variable e |
377+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:80:13:80:14 | access to parameter b1 |
378+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:84:18:84:19 | access to parameter b2 |
379+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:90:13:90:14 | access to parameter b3 |
380+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:94:18:94:19 | access to parameter b4 |
381+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:102:13:102:14 | access to parameter b5 |
382+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:113:13:113:14 | access to parameter b6 |
383+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:82:17:82:17 | access to local variable x |
384+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:86:17:86:17 | access to local variable x |
385+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:92:17:92:17 | access to local variable x |
386+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:96:17:96:17 | access to local variable x |
387+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:99:13:99:13 | access to local variable x |
388+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:104:17:104:17 | access to local variable x |
389+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:109:17:109:17 | access to local variable x |
390+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:115:17:115:17 | access to local variable x |
377391
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:11:13:11:13 | access to local variable x |
378392
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:15:13:15:13 | access to local variable x |
379393
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:24:13:24:13 | access to local variable x |

csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,16 @@
468468
| Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | SSA def(this.field) |
469469
| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | SSA param(x) |
470470
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) |
471+
| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | SSA param(b1) |
472+
| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | SSA param(b2) |
473+
| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | SSA param(b3) |
474+
| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:76:51:76:52 | SSA param(b4) |
475+
| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | SSA param(b5) |
476+
| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | SSA param(b6) |
477+
| Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | SSA def(x) |
478+
| Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | SSA def(x) |
479+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) |
480+
| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) |
471481
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | SSA def(x) |
472482
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:14:9:14:32 | SSA def(x) |
473483
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:23:9:23:37 | SSA def(x) |

csharp/ql/test/library-tests/dataflow/ssa/Test.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,48 @@ void h(int x)
7272
}
7373

7474
void use<T>(T x) { }
75+
76+
void phiReads(bool b1, bool b2, bool b3, bool b4, bool b5, bool b6)
77+
{
78+
var x = 0;
79+
80+
if (b1)
81+
{
82+
use(x);
83+
}
84+
else if (b2)
85+
{
86+
use(x);
87+
}
88+
// phi_use for `x`
89+
90+
if (b3)
91+
{
92+
use(x);
93+
}
94+
else if (b4)
95+
{
96+
use(x);
97+
}
98+
// no phi_use for `x`, because actual use exists in the block
99+
use(x);
100+
101+
102+
if (b5)
103+
{
104+
use(x);
105+
}
106+
else
107+
{
108+
x = 1;
109+
use(x);
110+
}
111+
// no phi_use (normal phi instead)
112+
113+
if (b6)
114+
{
115+
use(x);
116+
}
117+
// no phi_use for `x`, because not live
118+
}
75119
}

0 commit comments

Comments
 (0)