Skip to content

Commit c20e0da

Browse files
committed
C#: Replace most uses of Ssa::Definition with SsaDefinition.
1 parent 0e30741 commit c20e0da

18 files changed

Lines changed: 47 additions & 47 deletions

File tree

csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -570,30 +570,30 @@ class AccessOrCallExpr extends Expr {
570570
* An expression can have more than one SSA qualifier in the presence
571571
* of control flow splitting.
572572
*/
573-
Ssa::Definition getAnSsaQualifier(ControlFlowNode cfn) { result = getAnSsaQualifier(this, cfn) }
573+
SsaDefinition getAnSsaQualifier(ControlFlowNode cfn) { result = getAnSsaQualifier(this, cfn) }
574574
}
575575

576576
private Declaration getDeclarationTarget(Expr e) {
577577
e = any(AssignableAccess aa | result = aa.getTarget()) or
578578
result = e.(Call).getTarget()
579579
}
580580

581-
private Ssa::Definition getAnSsaQualifier(Expr e, ControlFlowNode cfn) {
581+
private SsaDefinition getAnSsaQualifier(Expr e, ControlFlowNode cfn) {
582582
e = getATrackedAccess(result, cfn)
583583
or
584584
not e = getATrackedAccess(_, _) and
585585
result = getAnSsaQualifier(e.(QualifiableExpr).getQualifier(), cfn)
586586
}
587587

588-
private AssignableAccess getATrackedAccess(Ssa::Definition def, ControlFlowNode cfn) {
588+
private AssignableAccess getATrackedAccess(SsaDefinition def, ControlFlowNode cfn) {
589589
result = def.getARead() and cfn = result.getControlFlowNode()
590590
or
591591
result = def.(Ssa::ExplicitDefinition).getADefinition().getTargetAccess() and
592592
cfn = def.getControlFlowNode()
593593
}
594594

595595
private predicate ssaMustHaveValue(Expr e, GuardValue v) {
596-
exists(Ssa::Definition def, BasicBlock bb |
596+
exists(SsaDefinition def, BasicBlock bb |
597597
e = def.getARead() and
598598
e.getBasicBlock() = bb and
599599
Guards::ssaControls(def, bb, v)
@@ -825,8 +825,8 @@ module Internal {
825825
)
826826
or
827827
e =
828-
any(Ssa::Definition def |
829-
forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nullDef(u))
828+
any(SsaDefinition def |
829+
forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nullDef(u))
830830
).getARead()
831831
}
832832

@@ -840,8 +840,8 @@ module Internal {
840840
exists(Expr e1 | nonNullValueImplied(e1) and nonNullValueImpliedUnary(e1, e))
841841
or
842842
e =
843-
any(Ssa::Definition def |
844-
forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nonNullDef(u))
843+
any(SsaDefinition def |
844+
forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nonNullDef(u))
845845
).getARead()
846846
}
847847

@@ -1104,7 +1104,7 @@ module Internal {
11041104
private predicate nodeIsGuardedBySameSubExprSsaDef0(
11051105
ControlFlowNode cfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g,
11061106
ControlFlowNode subCfn, BasicBlock subCfnBB, AccessOrCallExpr sub, GuardValue v,
1107-
Ssa::Definition def
1107+
SsaDefinition def
11081108
) {
11091109
nodeIsGuardedBySameSubExpr(cfn, guardedBB, guarded, g, sub, v) and
11101110
def = sub.getAnSsaQualifier(subCfn) and
@@ -1114,7 +1114,7 @@ module Internal {
11141114
pragma[nomagic]
11151115
private predicate nodeIsGuardedBySameSubExprSsaDef(
11161116
ControlFlowNode guardedCfn, AccessOrCallExpr guarded, Guard g, ControlFlowNode subCfn,
1117-
AccessOrCallExpr sub, GuardValue v, Ssa::Definition def
1117+
AccessOrCallExpr sub, GuardValue v, SsaDefinition def
11181118
) {
11191119
exists(BasicBlock guardedBB, BasicBlock subCfnBB |
11201120
nodeIsGuardedBySameSubExprSsaDef0(guardedCfn, guardedBB, guarded, g, subCfn, subCfnBB, sub,
@@ -1133,7 +1133,7 @@ module Internal {
11331133
cached
11341134
predicate isGuardedByExpr(AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v) {
11351135
isGuardedByExpr0(guarded, g, sub, v) and
1136-
forall(ControlFlowNode subCfn, Ssa::Definition def |
1136+
forall(ControlFlowNode subCfn, SsaDefinition def |
11371137
nodeIsGuardedBySameSubExprSsaDef(_, guarded, g, subCfn, sub, v, def)
11381138
|
11391139
def = guarded.getAnSsaQualifier(_)
@@ -1145,7 +1145,7 @@ module Internal {
11451145
ControlFlowNodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, GuardValue v
11461146
) {
11471147
nodeIsGuardedBySameSubExpr(guarded, _, _, g, sub, v) and
1148-
forall(ControlFlowNode subCfn, Ssa::Definition def |
1148+
forall(ControlFlowNode subCfn, SsaDefinition def |
11491149
nodeIsGuardedBySameSubExprSsaDef(guarded, _, g, subCfn, sub, v, def)
11501150
|
11511151
def =

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ class AlwaysNullExpr extends Expr {
6767
exists(AlwaysNullExpr e1, AlwaysNullExpr e2 | G::Internal::nullValueImpliedBinary(e1, e2, this))
6868
or
6969
this =
70-
any(Ssa::Definition def |
71-
forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nullDef(u))
70+
any(SsaDefinition def |
71+
forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nullDef(u))
7272
).getARead()
7373
or
7474
exists(Callable target |
@@ -94,8 +94,8 @@ class NonNullExpr extends Expr {
9494
this instanceof G::NullGuardedExpr
9595
or
9696
this =
97-
any(Ssa::Definition def |
98-
forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nonNullDef(u))
97+
any(SsaDefinition def |
98+
forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nonNullDef(u))
9999
).getARead()
100100
or
101101
exists(Callable target |
@@ -126,7 +126,7 @@ private predicate nonNullDef(Ssa::ExplicitDefinition def) {
126126
/**
127127
* Holds if `d` is a dereference of SSA definition `def`.
128128
*/
129-
private predicate dereferenceAt(Ssa::Definition def, Dereference d) { d = def.getARead() }
129+
private predicate dereferenceAt(SsaDefinition def, Dereference d) { d = def.getARead() }
130130

131131
private predicate isMaybeNullArgument(Ssa::ImplicitParameterDefinition def, MaybeNullExpr arg) {
132132
exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p |
@@ -190,7 +190,7 @@ private predicate isNullDefaultArgument(Ssa::ImplicitParameterDefinition def, Al
190190
}
191191

192192
/** Holds if `def` is an SSA definition that may be `null`. */
193-
private predicate defMaybeNull(Ssa::Definition def, ControlFlowNode node, string msg, Element reason) {
193+
private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string msg, Element reason) {
194194
not nonNullDef(def) and
195195
(
196196
// A variable compared to `null` might be `null`
@@ -236,13 +236,13 @@ private predicate defMaybeNull(Ssa::Definition def, ControlFlowNode node, string
236236
)
237237
}
238238

239-
private Ssa::Definition getAPseudoInput(Ssa::Definition def) {
239+
private SsaDefinition getAPseudoInput(SsaDefinition def) {
240240
result = def.(Ssa::PhiNode).getAnInput()
241241
}
242242

243243
// `def.getAnUltimateDefinition()` includes inputs into uncertain
244244
// definitions, but we only want inputs into pseudo nodes
245-
private Ssa::Definition getAnUltimateDefinition(Ssa::Definition def) {
245+
private SsaDefinition getAnUltimateDefinition(SsaDefinition def) {
246246
result = getAPseudoInput*(def) and
247247
not result instanceof Ssa::PhiNode
248248
}
@@ -252,7 +252,7 @@ private Ssa::Definition getAnUltimateDefinition(Ssa::Definition def) {
252252
* through an intermediate dereference that always throws a null reference
253253
* exception.
254254
*/
255-
private predicate defReaches(Ssa::Definition def, ControlFlowNode cfn) {
255+
private predicate defReaches(SsaDefinition def, ControlFlowNode cfn) {
256256
Ssa::ssaGetAFirstUse(def).getControlFlowNode() = cfn
257257
or
258258
exists(ControlFlowNode mid | defReaches(def, mid) |
@@ -280,7 +280,7 @@ private module NullnessConfig implements ControlFlowReachability::ConfigSig {
280280
private module NullnessFlow = ControlFlowReachability::Flow<NullnessConfig>;
281281

282282
predicate maybeNullDeref(Dereference d, Ssa::SourceVariable v, string msg, Element reason) {
283-
exists(Ssa::Definition origin, Ssa::Definition ssa, ControlFlowNode src, ControlFlowNode sink |
283+
exists(SsaDefinition origin, SsaDefinition ssa, ControlFlowNode src, ControlFlowNode sink |
284284
defMaybeNull(origin, src, msg, reason) and
285285
NullnessFlow::flow(src, origin, sink, ssa) and
286286
ssa.getSourceVariable() = v and
@@ -349,8 +349,8 @@ class Dereference extends G::DereferenceableExpr {
349349
)
350350
}
351351

352-
private predicate isAlwaysNull0(Ssa::Definition def) {
353-
forall(Ssa::Definition input | input = getAnUltimateDefinition(def) |
352+
private predicate isAlwaysNull0(SsaDefinition def) {
353+
forall(SsaDefinition input | input = getAnUltimateDefinition(def) |
354354
input.(Ssa::ExplicitDefinition).getADefinition().getSource() instanceof AlwaysNullExpr
355355
) and
356356
not nonNullDef(def) and
@@ -367,7 +367,7 @@ class Dereference extends G::DereferenceableExpr {
367367
// Exclude fields and properties, as they may not have an accurate SSA representation
368368
v.getAssignable() instanceof LocalScopeVariable and
369369
(
370-
forex(Ssa::Definition def0 | this = def0.getARead() | this.isAlwaysNull0(def0))
370+
forex(SsaDefinition def0 | this = def0.getARead() | this.isAlwaysNull0(def0))
371371
or
372372
exists(G::GuardValue nv |
373373
this.(G::GuardedExpr).mustHaveValue(nv) and

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ module VariableCapture {
250250
private predicate closureFlowStep(ControlFlowNodes::ExprNode e1, ControlFlowNodes::ExprNode e2) {
251251
e1.getExpr() = LocalFlow::getALastEvalNode(e2.getExpr())
252252
or
253-
exists(Ssa::Definition def, AssignableDefinition adef |
253+
exists(SsaDefinition def, AssignableDefinition adef |
254254
LocalFlow::defAssigns(adef, _, _, e1) and
255255
def.getAnUltimateDefinition().(Ssa::ExplicitDefinition).getADefinition() = adef and
256256
def.getARead().getControlFlowNode() = e2
@@ -2001,7 +2001,7 @@ private class FieldOrPropertyRead extends FieldOrPropertyAccess, AssignableRead
20012001
* SSA updates.
20022002
*/
20032003
predicate hasNonlocalValue() {
2004-
exists(Ssa::Definition def, Ssa::ImplicitDefinition idef |
2004+
exists(SsaDefinition def, Ssa::ImplicitDefinition idef |
20052005
def.getARead() = this and
20062006
idef = def.getAnUltimateDefinition()
20072007
|

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -900,9 +900,9 @@ private module Cached {
900900
}
901901

902902
cached
903-
predicate isLiveOutRefParameterDefinition(Ssa::Definition def, Parameter p) {
903+
predicate isLiveOutRefParameterDefinition(SsaDefinition def, Parameter p) {
904904
p.isOutOrRef() and
905-
exists(Ssa::SourceVariable v, Ssa::Definition def0, BasicBlock bb, int i |
905+
exists(Ssa::SourceVariable v, SsaDefinition def0, BasicBlock bb, int i |
906906
v = def.getSourceVariable() and
907907
p = v.getAssignable() and
908908
def = def0.getAnUltimateDefinition() and

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ private module Impl {
106106
* - `isEq = true` : `def == e + delta`
107107
* - `isEq = false` : `def != e + delta`
108108
*/
109-
Guard eqFlowCond(Definition def, ExprNode e, int delta, boolean isEq, boolean testIsTrue) {
109+
Guard eqFlowCond(SsaDefinition def, ExprNode e, int delta, boolean isEq, boolean testIsTrue) {
110110
exists(boolean eqpolarity |
111111
result.isEquality(ssaRead(def, delta), e, eqpolarity) and
112112
testIsTrue = [false, true] and

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module Private {
1313

1414
class ConstantIntegerExpr = CU::ConstantIntegerExpr;
1515

16-
class SsaVariable = CS::Ssa::Definition;
16+
class SsaVariable = CS::SsaDefinition;
1717

1818
class SsaPhiNode = CS::Ssa::PhiNode;
1919

@@ -245,7 +245,7 @@ private module Impl {
245245
)
246246
}
247247

248-
ExprNode getARead(Ssa::Definition v) { v.getARead().getControlFlowNode() = result }
248+
ExprNode getARead(SsaDefinition v) { v.getARead().getControlFlowNode() = result }
249249

250250
Field getField(ExprNode fa) { result = fa.getExpr().(FieldAccess).getTarget() }
251251

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
@@ -5,7 +5,7 @@
55
private import csharp as CS
66
private import SsaReadPositionCommon
77

8-
class SsaVariable = CS::Ssa::Definition;
8+
class SsaVariable = CS::SsaDefinition;
99

1010
class SsaPhiNode = CS::Ssa::PhiNode;
1111

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import ConstantUtils
1010
private class ExprNode = ControlFlowNodes::ExprNode;
1111

1212
/** An SSA variable. */
13-
class SsaVariable extends Definition {
13+
class SsaVariable extends SsaDefinition {
1414
/** Gets a read of this SSA variable. */
1515
ExprNode getAUse() { this.getARead().getControlFlowNode() = result }
1616
}
@@ -26,7 +26,7 @@ ExprNode getAnExplicitDefinitionRead(ExprNode src) {
2626
/**
2727
* Gets an expression that equals `v - delta`.
2828
*/
29-
ExprNode ssaRead(Definition v, int delta) {
29+
ExprNode ssaRead(SsaDefinition v, int delta) {
3030
v.getARead().getControlFlowNode() = result and delta = 0
3131
or
3232
exists(ExprNode::AddOperation add, int d1, ConstantIntegerExpr c |

csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import semmle.code.csharp.controlflow.Guards as Guards
2020
import codeql.controlflow.queries.ConstantCondition as ConstCond
2121

2222
module ConstCondInput implements ConstCond::InputSig<BasicBlock> {
23-
class SsaDefinition = Ssa::Definition;
23+
class SsaDefinition = Ssa::SsaDefinition;
2424

2525
class GuardValue = Guards::GuardValue;
2626

csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ abstract class BadDynamicCall extends DynamicExpr {
3636
}
3737

3838
private Type possibleTypeForRelevantSource(Variable v, int i, Expr source) {
39-
exists(AssignableRead read, Ssa::Definition ssaDef, Ssa::ExplicitDefinition ultimateSsaDef |
39+
exists(AssignableRead read, SsaDefinition ssaDef, Ssa::ExplicitDefinition ultimateSsaDef |
4040
read = this.getARelevantVariableAccess(i) and
4141
v = read.getTarget() and
4242
result = source.getType() and

0 commit comments

Comments
 (0)