Skip to content

Commit 9a7eb8d

Browse files
committed
C#: Replace Ssa::PhiNode with SsaPhiDefinition.
1 parent 6ecdf3f commit 9a7eb8d

8 files changed

Lines changed: 16 additions & 14 deletions

File tree

csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string m
186186
de.guardSuggestsMaybeNull(reason) and
187187
msg = "as suggested by $@ null check" and
188188
node = def.getControlFlowNode() and
189-
not de = any(Ssa::PhiNode phi).getARead() and
189+
not de = any(SsaPhiDefinition phi).getARead() and
190190
// Don't use a check as reason if there is a `null` assignment
191191
// or argument
192192
not def.(SsaExplicitWrite).getValue() instanceof MaybeNullExpr and
@@ -213,22 +213,22 @@ private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string m
213213
exists(Dereference d | dereferenceAt(def, d) |
214214
node = def.getControlFlowNode() and
215215
d.hasNullableType() and
216-
not def instanceof Ssa::PhiNode and
216+
not def instanceof SsaPhiDefinition and
217217
reason = def.getSourceVariable().getAssignable() and
218218
msg = "because it has a nullable type"
219219
)
220220
)
221221
}
222222

223223
private SsaDefinition getAPseudoInput(SsaDefinition def) {
224-
result = def.(Ssa::PhiNode).getAnInput()
224+
result = def.(SsaPhiDefinition).getAnInput()
225225
}
226226

227227
// `def.getAnUltimateDefinition()` includes inputs into uncertain
228228
// definitions, but we only want inputs into pseudo nodes
229229
private SsaDefinition getAnUltimateDefinition(SsaDefinition def) {
230230
result = getAPseudoInput*(def) and
231-
not result instanceof Ssa::PhiNode
231+
not result instanceof SsaPhiDefinition
232232
}
233233

234234
/**

csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ module Ssa {
357357
* includes inputs to phi nodes and the prior definitions of uncertain writes.
358358
*/
359359
private Definition getAPhiInputOrPriorDefinition() {
360-
result = this.(PhiNode).getAnInput() or
360+
result = this.(SsaPhiDefinition).getAnInput() or
361361
result = this.(UncertainDefinition).getPriorDefinition()
362362
}
363363

@@ -392,7 +392,7 @@ module Ssa {
392392
*/
393393
final Definition getAnUltimateDefinition() {
394394
result = this.getAPhiInputOrPriorDefinition*() and
395-
not result instanceof PhiNode
395+
not result instanceof SsaPhiDefinition
396396
}
397397

398398
/**
@@ -646,11 +646,13 @@ module Ssa {
646646
}
647647

648648
/**
649+
* DEPRECATED: Use `SsaPhiDefinition` instead.
650+
*
649651
* An SSA phi node, that is, a pseudo definition for a variable at a point
650652
* in the flow graph where otherwise two or more definitions for the variable
651653
* would be visible.
652654
*/
653-
class PhiNode extends Definition, SsaImpl::PhiNode {
655+
deprecated class PhiNode extends Definition, SsaImpl::PhiNode {
654656
/**
655657
* Gets an input of this phi node. Example:
656658
*

csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ private module Cached {
873873
}
874874

875875
cached
876-
Definition phiHasInputFromBlock(Ssa::PhiNode phi, BasicBlock bb) {
876+
deprecated Definition phiHasInputFromBlock(Ssa::PhiNode phi, BasicBlock bb) {
877877
Impl::phiHasInputFromBlock(phi, result, bb)
878878
}
879879

csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module Private {
99

1010
class SsaVariable = SU::SsaVariable;
1111

12-
class SsaPhiNode = CS::Ssa::PhiNode;
12+
class SsaPhiNode = CS::SsaPhiDefinition;
1313

1414
class Expr = CS::ControlFlowNodes::ExprNode;
1515

csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module Private {
1515

1616
class SsaVariable = CS::SsaDefinition;
1717

18-
class SsaPhiNode = CS::Ssa::PhiNode;
18+
class SsaPhiNode = CS::SsaPhiDefinition;
1919

2020
class VarAccess = RU::ExprNode::AssignableAccess;
2121

csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ private import SsaReadPositionCommon
77

88
class SsaVariable = CS::SsaDefinition;
99

10-
class SsaPhiNode = CS::Ssa::PhiNode;
10+
class SsaPhiNode = CS::SsaPhiDefinition;
1111

1212
class BasicBlock = CS::BasicBlock;
1313

csharp/ql/test/library-tests/dataflow/defuse/useUseEquivalence.ql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ private TLocalScopeVariableReadOrSsaDef getANextReadOrDef(TLocalScopeVariableRea
3232
result = TLocalScopeVariableRead(read.getANextRead())
3333
or
3434
not exists(read.getANextRead()) and
35-
exists(SsaDefinition ssaDef, Ssa::PhiNode phi, BasicBlock bb |
35+
exists(SsaDefinition ssaDef, SsaPhiDefinition phi, BasicBlock bb |
3636
ssaDef.getARead() = read and
3737
phi.getAnInput() = ssaDef and
3838
phi.definesAt(_, bb, _) and
@@ -45,7 +45,7 @@ private TLocalScopeVariableReadOrSsaDef getANextReadOrDef(TLocalScopeVariableRea
4545
result = TLocalScopeVariableRead(Ssa::ssaGetAFirstUse(ssaDef))
4646
or
4747
not exists(Ssa::ssaGetAFirstUse(ssaDef)) and
48-
exists(Ssa::PhiNode phi |
48+
exists(SsaPhiDefinition phi |
4949
phi.getAnInput() = ssaDef and
5050
result = TSsaDefinition(phi)
5151
)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csharp
22

3-
from Ssa::SourceVariable v, Ssa::PhiNode phi, SsaDefinition input
3+
from Ssa::SourceVariable v, SsaPhiDefinition phi, SsaDefinition input
44
where
55
phi.getAnInput() = input and
66
v = phi.getSourceVariable()

0 commit comments

Comments
 (0)