Skip to content

Commit a116927

Browse files
committed
Use location of basic block for SsaPhiNode
1 parent 6dad937 commit a116927

File tree

5 files changed

+32
-34
lines changed

5 files changed

+32
-34
lines changed

go/ql/lib/semmle/go/dataflow/SSA.qll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,7 @@ class SsaPhiNode extends SsaPseudoDefinition, TPhi {
294294
override predicate hasLocationInfo(
295295
string filepath, int startline, int startcolumn, int endline, int endcolumn
296296
) {
297-
endline = startline and
298-
endcolumn = startcolumn and
299-
this.getBasicBlock().hasLocationInfo(filepath, startline, startcolumn, _, _)
297+
this.getBasicBlock().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
300298
}
301299
}
302300

go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,21 @@
9595
| main.go:41:8:41:21 | call to make | main.go:41:2:41:3 | definition of s4 |
9696
| main.go:46:13:46:14 | argument corresponding to xs | main.go:46:13:46:14 | definition of xs |
9797
| main.go:46:13:46:14 | definition of xs | main.go:47:20:47:21 | xs |
98-
| main.go:46:24:46:27 | definition of keys | main.go:47:20:47:20 | keys = phi(def@46:24, def@49:3) |
98+
| main.go:46:24:46:27 | definition of keys | main.go:47:20:47:21 | keys = phi(def@46:24, def@49:3) |
9999
| main.go:46:24:46:27 | zero value for keys | main.go:46:24:46:27 | definition of keys |
100-
| main.go:46:34:46:37 | definition of vals | main.go:47:20:47:20 | vals = phi(def@46:34, def@48:3) |
100+
| main.go:46:34:46:37 | definition of vals | main.go:47:20:47:21 | vals = phi(def@46:34, def@48:3) |
101101
| main.go:46:34:46:37 | zero value for vals | main.go:46:34:46:37 | definition of vals |
102102
| main.go:47:2:50:2 | range statement[0] | main.go:47:6:47:6 | definition of k |
103103
| main.go:47:2:50:2 | range statement[1] | main.go:47:9:47:9 | definition of v |
104104
| main.go:47:6:47:6 | definition of k | main.go:49:11:49:11 | k |
105105
| main.go:47:9:47:9 | definition of v | main.go:48:11:48:11 | v |
106-
| main.go:47:20:47:20 | keys = phi(def@46:24, def@49:3) | main.go:46:24:46:27 | implicit read of keys |
107-
| main.go:47:20:47:20 | keys = phi(def@46:24, def@49:3) | main.go:49:3:49:6 | keys |
108-
| main.go:47:20:47:20 | vals = phi(def@46:34, def@48:3) | main.go:46:34:46:37 | implicit read of vals |
109-
| main.go:47:20:47:20 | vals = phi(def@46:34, def@48:3) | main.go:48:3:48:6 | vals |
110-
| main.go:48:3:48:6 | definition of vals | main.go:47:20:47:20 | vals = phi(def@46:34, def@48:3) |
106+
| main.go:47:20:47:21 | keys = phi(def@46:24, def@49:3) | main.go:46:24:46:27 | implicit read of keys |
107+
| main.go:47:20:47:21 | keys = phi(def@46:24, def@49:3) | main.go:49:3:49:6 | keys |
108+
| main.go:47:20:47:21 | vals = phi(def@46:34, def@48:3) | main.go:46:34:46:37 | implicit read of vals |
109+
| main.go:47:20:47:21 | vals = phi(def@46:34, def@48:3) | main.go:48:3:48:6 | vals |
110+
| main.go:48:3:48:6 | definition of vals | main.go:47:20:47:21 | vals = phi(def@46:34, def@48:3) |
111111
| main.go:48:3:48:11 | ... += ... | main.go:48:3:48:6 | definition of vals |
112-
| main.go:49:3:49:6 | definition of keys | main.go:47:20:47:20 | keys = phi(def@46:24, def@49:3) |
112+
| main.go:49:3:49:6 | definition of keys | main.go:47:20:47:21 | keys = phi(def@46:24, def@49:3) |
113113
| main.go:49:3:49:11 | ... += ... | main.go:49:3:49:6 | definition of keys |
114114
| main.go:55:6:55:7 | definition of ch | main.go:56:2:56:3 | ch |
115115
| main.go:55:6:55:7 | definition of ch | main.go:57:4:57:5 | ch |
@@ -147,16 +147,16 @@
147147
| url.go:8:20:8:20 | argument corresponding to s | url.go:8:20:8:20 | definition of s |
148148
| url.go:8:20:8:20 | definition of s | url.go:12:46:12:46 | s |
149149
| url.go:8:20:8:20 | definition of s | url.go:14:48:14:48 | s |
150-
| url.go:12:3:12:5 | definition of res | url.go:16:5:16:5 | res = phi(def@12:3, def@14:3) |
150+
| url.go:12:3:12:5 | definition of res | url.go:16:5:16:7 | res = phi(def@12:3, def@14:3) |
151151
| url.go:12:3:12:48 | ... = ...[0] | url.go:12:3:12:5 | definition of res |
152152
| url.go:12:3:12:48 | ... = ...[1] | url.go:12:8:12:10 | definition of err |
153-
| url.go:12:8:12:10 | definition of err | url.go:16:5:16:5 | err = phi(def@12:8, def@14:8) |
154-
| url.go:14:3:14:5 | definition of res | url.go:16:5:16:5 | res = phi(def@12:3, def@14:3) |
153+
| url.go:12:8:12:10 | definition of err | url.go:16:5:16:7 | err = phi(def@12:8, def@14:8) |
154+
| url.go:14:3:14:5 | definition of res | url.go:16:5:16:7 | res = phi(def@12:3, def@14:3) |
155155
| url.go:14:3:14:50 | ... = ...[0] | url.go:14:3:14:5 | definition of res |
156156
| url.go:14:3:14:50 | ... = ...[1] | url.go:14:8:14:10 | definition of err |
157-
| url.go:14:8:14:10 | definition of err | url.go:16:5:16:5 | err = phi(def@12:8, def@14:8) |
158-
| url.go:16:5:16:5 | err = phi(def@12:8, def@14:8) | url.go:16:5:16:7 | err |
159-
| url.go:16:5:16:5 | res = phi(def@12:3, def@14:3) | url.go:19:9:19:11 | res |
157+
| url.go:14:8:14:10 | definition of err | url.go:16:5:16:7 | err = phi(def@12:8, def@14:8) |
158+
| url.go:16:5:16:7 | err = phi(def@12:8, def@14:8) | url.go:16:5:16:7 | err |
159+
| url.go:16:5:16:7 | res = phi(def@12:3, def@14:3) | url.go:19:9:19:11 | res |
160160
| url.go:22:12:22:12 | argument corresponding to i | url.go:22:12:22:12 | definition of i |
161161
| url.go:22:12:22:12 | definition of i | url.go:24:5:24:5 | i |
162162
| url.go:22:19:22:19 | argument corresponding to s | url.go:22:19:22:19 | definition of s |

go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
| main.go:15:15:15:15 | y | main.go:14:2:14:2 | definition of y | main.go:14:2:14:2 | y |
33
| main.go:17:3:17:3 | y | main.go:14:2:14:2 | definition of y | main.go:14:2:14:2 | y |
44
| main.go:19:12:19:12 | x | main.go:13:6:13:6 | definition of x | main.go:13:6:13:6 | x |
5-
| main.go:19:15:19:15 | y | main.go:19:2:19:2 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
6-
| main.go:21:7:21:7 | y | main.go:19:2:19:2 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
7-
| main.go:23:12:23:12 | x | main.go:23:2:23:2 | x = phi(def@13:6, def@21:3) | main.go:13:6:13:6 | x |
8-
| main.go:23:15:23:15 | y | main.go:19:2:19:2 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
5+
| main.go:19:15:19:15 | y | main.go:19:2:19:10 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
6+
| main.go:21:7:21:7 | y | main.go:19:2:19:10 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
7+
| main.go:23:12:23:12 | x | main.go:23:2:23:10 | x = phi(def@13:6, def@21:3) | main.go:13:6:13:6 | x |
8+
| main.go:23:15:23:15 | y | main.go:19:2:19:10 | y = phi(def@14:2, def@17:3) | main.go:14:2:14:2 | y |
99
| main.go:27:10:27:10 | x | main.go:26:10:26:10 | definition of x | main.go:26:10:26:10 | x |
1010
| main.go:29:10:29:10 | b | main.go:27:5:27:5 | definition of b | main.go:27:5:27:5 | b |
1111
| main.go:29:13:29:13 | a | main.go:27:2:27:2 | definition of a | main.go:27:2:27:2 | a |
@@ -17,9 +17,9 @@
1717
| main.go:44:12:44:12 | x | main.go:39:2:39:2 | definition of x | main.go:39:2:39:2 | x |
1818
| main.go:47:13:47:18 | implicit read of result | main.go:48:2:48:7 | definition of result | main.go:47:13:47:18 | result |
1919
| main.go:52:14:52:19 | implicit read of result | main.go:52:14:52:19 | definition of result | main.go:52:14:52:19 | result |
20-
| main.go:61:12:61:12 | x | main.go:58:6:58:6 | x = phi(def@57:6, def@59:3) | main.go:57:6:57:6 | x |
21-
| main.go:64:16:64:16 | i | main.go:65:6:65:6 | i = phi(def@64:16, def@64:6) | main.go:64:6:64:6 | i |
22-
| main.go:70:12:70:12 | y | main.go:65:6:65:6 | y = phi(def@63:2, def@68:3) | main.go:63:2:63:2 | y |
20+
| main.go:61:12:61:12 | x | main.go:58:6:58:9 | x = phi(def@57:6, def@59:3) | main.go:57:6:57:6 | x |
21+
| main.go:64:16:64:16 | i | main.go:65:6:65:9 | i = phi(def@64:16, def@64:6) | main.go:64:6:64:6 | i |
22+
| main.go:70:12:70:12 | y | main.go:65:6:65:9 | y = phi(def@63:2, def@68:3) | main.go:63:2:63:2 | y |
2323
| main.go:73:16:73:16 | i | main.go:74:3:74:3 | i = phi(def@73:16, def@73:6) | main.go:73:6:73:6 | i |
2424
| main.go:79:12:79:12 | z | main.go:74:3:74:3 | definition of z | main.go:72:2:72:2 | z |
2525
| main.go:82:18:82:18 | implicit read of a | main.go:84:5:84:5 | definition of a | main.go:82:18:82:18 | a |

go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
| main.go:13:6:13:6 | definition of x |
22
| main.go:14:2:14:2 | definition of y |
33
| main.go:17:3:17:3 | definition of y |
4-
| main.go:19:2:19:2 | y = phi(def@14:2, def@17:3) |
4+
| main.go:19:2:19:10 | y = phi(def@14:2, def@17:3) |
55
| main.go:21:3:21:3 | definition of x |
6-
| main.go:23:2:23:2 | x = phi(def@13:6, def@21:3) |
6+
| main.go:23:2:23:10 | x = phi(def@13:6, def@21:3) |
77
| main.go:26:10:26:10 | definition of x |
88
| main.go:27:2:27:2 | definition of a |
99
| main.go:27:5:27:5 | definition of b |
@@ -17,13 +17,13 @@
1717
| main.go:48:2:48:7 | definition of result |
1818
| main.go:52:14:52:19 | definition of result |
1919
| main.go:57:6:57:6 | definition of x |
20-
| main.go:58:6:58:6 | x = phi(def@57:6, def@59:3) |
20+
| main.go:58:6:58:9 | x = phi(def@57:6, def@59:3) |
2121
| main.go:59:3:59:3 | definition of x |
2222
| main.go:63:2:63:2 | definition of y |
2323
| main.go:64:6:64:6 | definition of i |
2424
| main.go:64:16:64:18 | definition of i |
25-
| main.go:65:6:65:6 | i = phi(def@64:16, def@64:6) |
26-
| main.go:65:6:65:6 | y = phi(def@63:2, def@68:3) |
25+
| main.go:65:6:65:9 | i = phi(def@64:16, def@64:6) |
26+
| main.go:65:6:65:9 | y = phi(def@63:2, def@68:3) |
2727
| main.go:68:3:68:3 | definition of y |
2828
| main.go:73:6:73:6 | definition of i |
2929
| main.go:73:16:73:18 | definition of i |

go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
| main.go:13:6:13:6 | (def@13:6) | x |
22
| main.go:14:2:14:2 | (def@14:2) | y |
33
| main.go:17:3:17:3 | (def@17:3) | y |
4-
| main.go:19:2:19:2 | (phi@19:2) | y |
4+
| main.go:19:2:19:10 | (phi@19:2) | y |
55
| main.go:21:3:21:3 | (def@21:3) | x |
6-
| main.go:23:2:23:2 | (phi@23:2) | x |
6+
| main.go:23:2:23:10 | (phi@23:2) | x |
77
| main.go:26:10:26:10 | (def@26:10) | x |
88
| main.go:27:2:27:2 | (def@27:2) | a |
99
| main.go:27:5:27:5 | (def@27:5) | b |
@@ -17,13 +17,13 @@
1717
| main.go:48:2:48:7 | (def@48:2) | result |
1818
| main.go:52:14:52:19 | (def@52:14) | result |
1919
| main.go:57:6:57:6 | (def@57:6) | x |
20-
| main.go:58:6:58:6 | (phi@58:6) | x |
20+
| main.go:58:6:58:9 | (phi@58:6) | x |
2121
| main.go:59:3:59:3 | (def@59:3) | x |
2222
| main.go:63:2:63:2 | (def@63:2) | y |
2323
| main.go:64:6:64:6 | (def@64:6) | i |
2424
| main.go:64:16:64:18 | (def@64:16) | i |
25-
| main.go:65:6:65:6 | (phi@65:6) | i |
26-
| main.go:65:6:65:6 | (phi@65:6) | y |
25+
| main.go:65:6:65:9 | (phi@65:6) | i |
26+
| main.go:65:6:65:9 | (phi@65:6) | y |
2727
| main.go:68:3:68:3 | (def@68:3) | y |
2828
| main.go:73:6:73:6 | (def@73:6) | i |
2929
| main.go:73:16:73:18 | (def@73:16) | i |

0 commit comments

Comments
 (0)