Skip to content

Commit a683c15

Browse files
committed
C#: Replace Ssa::PhiNode with SsaPhiDefinition.
1 parent ad03b58 commit a683c15

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
@@ -196,7 +196,7 @@ private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string m
196196
de.guardSuggestsMaybeNull(reason) and
197197
msg = "as suggested by $@ null check" and
198198
node = def.getControlFlowNode() and
199-
not de = any(Ssa::PhiNode phi).getARead() and
199+
not de = any(SsaPhiDefinition phi).getARead() and
200200
// Don't use a check as reason if there is a `null` assignment
201201
// or argument
202202
not def.(SsaExplicitWrite).getValue() instanceof MaybeNullExpr and
@@ -227,22 +227,22 @@ private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string m
227227
exists(Dereference d | dereferenceAt(def, d) |
228228
node = def.getControlFlowNode() and
229229
d.hasNullableType() and
230-
not def instanceof Ssa::PhiNode and
230+
not def instanceof SsaPhiDefinition and
231231
reason = def.getSourceVariable().getAssignable() and
232232
msg = "because it has a nullable type"
233233
)
234234
)
235235
}
236236

237237
private SsaDefinition getAPseudoInput(SsaDefinition def) {
238-
result = def.(Ssa::PhiNode).getAnInput()
238+
result = def.(SsaPhiDefinition).getAnInput()
239239
}
240240

241241
// `def.getAnUltimateDefinition()` includes inputs into uncertain
242242
// definitions, but we only want inputs into pseudo nodes
243243
private SsaDefinition getAnUltimateDefinition(SsaDefinition def) {
244244
result = getAPseudoInput*(def) and
245-
not result instanceof Ssa::PhiNode
245+
not result instanceof SsaPhiDefinition
246246
}
247247

248248
/**

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ module Ssa {
367367
* includes inputs to phi nodes and the prior definitions of uncertain writes.
368368
*/
369369
private Definition getAPhiInputOrPriorDefinition() {
370-
result = this.(PhiNode).getAnInput() or
370+
result = this.(SsaPhiDefinition).getAnInput() or
371371
result = this.(UncertainDefinition).getPriorDefinition()
372372
}
373373

@@ -402,7 +402,7 @@ module Ssa {
402402
*/
403403
final Definition getAnUltimateDefinition() {
404404
result = this.getAPhiInputOrPriorDefinition*() and
405-
not result instanceof PhiNode
405+
not result instanceof SsaPhiDefinition
406406
}
407407

408408
/**
@@ -651,11 +651,13 @@ module Ssa {
651651
}
652652

653653
/**
654+
* DEPRECATED: Use `SsaPhiDefinition` instead.
655+
*
654656
* An SSA phi node, that is, a pseudo definition for a variable at a point
655657
* in the flow graph where otherwise two or more definitions for the variable
656658
* would be visible.
657659
*/
658-
class PhiNode extends Definition, SsaImpl::PhiNode {
660+
deprecated class PhiNode extends Definition, SsaImpl::PhiNode {
659661
/**
660662
* Gets an input of this phi node. Example:
661663
*

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ private module Cached {
858858
}
859859

860860
cached
861-
Definition phiHasInputFromBlock(Ssa::PhiNode phi, BasicBlock bb) {
861+
deprecated Definition phiHasInputFromBlock(Ssa::PhiNode phi, BasicBlock bb) {
862862
Impl::phiHasInputFromBlock(phi, result, bb)
863863
}
864864

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)