Skip to content

Commit 483b2d8

Browse files
committed
Java: Replace uses of SsaExplicitUpdate.
1 parent 07e6356 commit 483b2d8

File tree

17 files changed

+57
-54
lines changed

17 files changed

+57
-54
lines changed

java/ql/lib/semmle/code/java/dataflow/DefUse.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ predicate useUsePair(VarRead use1, VarRead use2) { adjacentUseUse+(use1, use2) }
3535
*/
3636
predicate defUsePair(VariableUpdate def, VarRead use) {
3737
exists(SsaVariable v |
38-
v.getAUse() = use and v.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr() = def
38+
v.getAUse() = use and v.getAnUltimateDefinition().(SsaExplicitWrite).getDefiningExpr() = def
3939
)
4040
}
4141

java/ql/lib/semmle/code/java/dataflow/NullGuards.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ Expr clearlyNotNullExpr(Expr reason) {
110110
/** Holds if `v` is an SSA variable that is provably not `null`. */
111111
predicate clearlyNotNull(SsaVariable v, Expr reason) {
112112
exists(Expr src |
113-
src = v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() and
113+
src = v.(SsaExplicitWrite).getValue() and
114114
src = clearlyNotNullExpr(reason)
115115
)
116116
or
117117
exists(CatchClause cc, LocalVariableDeclExpr decl |
118118
decl = cc.getVariable() and
119-
decl = v.(SsaExplicitUpdate).getDefiningExpr() and
119+
decl = v.(SsaExplicitWrite).getDefiningExpr() and
120120
reason = decl
121121
)
122122
or

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg,
151151
not exists(MethodCall ma | ma.getAnArgument().getAChildExpr*() = e)
152152
) and
153153
// Don't use a guard as reason if there is a null assignment.
154-
not v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = nullExpr()
154+
not v.(SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = nullExpr()
155155
)
156156
or
157157
// A parameter might be null if there is a null argument somewhere.
@@ -167,7 +167,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg,
167167
or
168168
// If the source of a variable is null then the variable may be null.
169169
exists(VariableAssign def |
170-
v.(SsaExplicitUpdate).getDefiningExpr() = def and
170+
v.(SsaExplicitWrite).getDefiningExpr() = def and
171171
def.getSource() = nullExpr(node.asExpr()) and
172172
reason = def and
173173
msg = "because of $@ assignment"
@@ -185,7 +185,7 @@ private Expr nonEmptyExpr() {
185185
v.getSourceVariable().getType() instanceof Array
186186
|
187187
// ...its definition is non-empty...
188-
v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = nonEmptyExpr()
188+
v.(SsaExplicitWrite).getValue() = nonEmptyExpr()
189189
or
190190
// ...or it is guarded by a condition proving its length to be non-zero.
191191
exists(ConditionBlock cond, boolean branch, FieldAccess length |
@@ -280,7 +280,7 @@ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason)
280280
predicate alwaysNullDeref(SsaSourceVariable v, VarAccess va) {
281281
exists(BasicBlock bb, SsaVariable ssa |
282282
forall(SsaVariable def | def = ssa.getAnUltimateDefinition() |
283-
def.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = alwaysNullExpr()
283+
def.(SsaExplicitWrite).getValue() = alwaysNullExpr()
284284
)
285285
or
286286
nullGuardControls(ssa, true, bb) and

java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ module Sem implements Semantic<Location> {
252252
predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) }
253253
}
254254

255-
class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitUpdate {
255+
class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitWrite {
256256
Expr getDefiningExpr() { result = super.getDefiningExpr() }
257257
}
258258

java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ predicate eqFlowCond = U::eqFlowCond/5;
3434
* have non-`SsaPhiNode` results.
3535
*/
3636
private predicate nonNullSsaFwdStep(SsaVariable v, SsaVariable phi) {
37-
exists(SsaExplicitUpdate vnull, SsaPhiNode phi0 | phi0 = phi |
37+
exists(SsaExplicitWrite vnull, SsaPhiNode phi0 | phi0 = phi |
3838
2 = strictcount(phi0.getAPhiInput()) and
3939
vnull = phi0.getAPhiInput() and
4040
v = phi0.getAPhiInput() and
4141
not backEdge(phi0, v, _) and
4242
vnull != v and
43-
vnull.getDefiningExpr().(VariableAssign).getSource() instanceof NullLiteral
43+
vnull.getValue() instanceof NullLiteral
4444
)
4545
}
4646

@@ -58,7 +58,7 @@ private predicate nonNullDefStep(Expr e1, Expr e2) {
5858
*/
5959
ArrayCreationExpr getArrayDef(SsaVariable v) {
6060
exists(Expr src |
61-
v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = src and
61+
v.(SsaExplicitWrite).getValue() = src and
6262
nonNullDefStep*(result, src)
6363
)
6464
or
@@ -86,9 +86,9 @@ pragma[nomagic]
8686
private predicate constantIntegerExpr(Expr e, int val) {
8787
e.(CompileTimeConstantExpr).getIntValue() = val
8888
or
89-
exists(SsaExplicitUpdate v, Expr src |
90-
e = v.getAUse() and
91-
src = v.getDefiningExpr().(VariableAssign).getSource() and
89+
exists(SsaExplicitWrite v, Expr src |
90+
e = v.getARead() and
91+
src = v.getValue() and
9292
constantIntegerExpr(src, val)
9393
)
9494
or
@@ -112,9 +112,9 @@ pragma[nomagic]
112112
private predicate constantBooleanExpr(Expr e, boolean val) {
113113
e.(CompileTimeConstantExpr).getBooleanValue() = val
114114
or
115-
exists(SsaExplicitUpdate v, Expr src |
116-
e = v.getAUse() and
117-
src = v.getDefiningExpr().(VariableAssign).getSource() and
115+
exists(SsaExplicitWrite v, Expr src |
116+
e = v.getARead() and
117+
src = v.getValue() and
118118
constantBooleanExpr(src, val)
119119
)
120120
or
@@ -125,9 +125,9 @@ pragma[nomagic]
125125
private predicate constantStringExpr(Expr e, string val) {
126126
e.(CompileTimeConstantExpr).getStringValue() = val
127127
or
128-
exists(SsaExplicitUpdate v, Expr src |
129-
e = v.getAUse() and
130-
src = v.getDefiningExpr().(VariableAssign).getSource() and
128+
exists(SsaExplicitWrite v, Expr src |
129+
e = v.getARead() and
130+
src = v.getValue() and
131131
constantStringExpr(src, val)
132132
)
133133
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,11 @@ class SsaUpdate extends SsaVariable instanceof WriteDefinition {
215215
SsaUpdate() { not this instanceof SsaImplicitInit }
216216
}
217217

218-
/** An SSA variable that is defined by a `VariableUpdate`. */
218+
/**
219+
* DEPRECATED: Use `SsaExplicitWrite` instead.
220+
*
221+
* An SSA variable that is defined by a `VariableUpdate`.
222+
*/
219223
class SsaExplicitUpdate extends SsaUpdate {
220224
private VariableUpdate upd;
221225

@@ -368,7 +372,7 @@ private class RefTypeCastingExpr extends CastingExpr {
368372
Expr sameValue(SsaVariable v, VarAccess va) {
369373
result = v.getAUse() and result = va
370374
or
371-
result.(AssignExpr).getDest() = va and result = v.(SsaExplicitUpdate).getDefiningExpr()
375+
result.(AssignExpr).getDest() = va and result = v.(SsaExplicitWrite).getDefiningExpr()
372376
or
373377
result.(AssignExpr).getSource() = sameValue(v, va)
374378
or

java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ predicate arrayStoreStep(Node node1, Node node2) {
460460
}
461461

462462
private predicate enhancedForStmtStep(Node node1, Node node2, Type containerType) {
463-
exists(EnhancedForStmt for, Expr e, SsaExplicitUpdate v |
463+
exists(EnhancedForStmt for, Expr e, SsaExplicitWrite v |
464464
for.getExpr() = e and
465465
node1.asExpr() = e and
466466
containerType = e.getType() and

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ private predicate deadcode(Expr e) {
2929
module SsaFlow {
3030
module Impl = SsaImpl::DataFlowIntegration;
3131

32-
private predicate ssaDefAssigns(SsaExplicitUpdate def, Expr value) {
32+
private predicate ssaDefAssigns(SsaExplicitWrite def, Expr value) {
3333
exists(VariableUpdate upd | upd = def.getDefiningExpr() |
3434
value = upd.(VariableAssign).getSource() or
3535
value = upd.(AssignOp) or

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ private predicate closureFlowStep(Expr e1, Expr e2) {
6464
or
6565
exists(SsaVariable v |
6666
v.getAUse() = e2 and
67-
v.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() =
68-
e1
67+
v.getAnUltimateDefinition().(SsaExplicitWrite).getValue() = e1
6968
)
7069
}
7170

@@ -395,7 +394,7 @@ class CastNode extends ExprNode {
395394
CastNode() {
396395
this.getExpr() instanceof CastingExpr
397396
or
398-
exists(SsaExplicitUpdate upd |
397+
exists(SsaExplicitWrite upd |
399398
upd.getDefiningExpr().(VariableAssign).getSource() =
400399
[
401400
any(SwitchStmt ss).getExpr(), any(SwitchExpr se).getExpr(),
@@ -531,9 +530,9 @@ class NodeRegion instanceof BasicBlock {
531530
private predicate constantBooleanExpr(Expr e, boolean val) {
532531
e.(CompileTimeConstantExpr).getBooleanValue() = val
533532
or
534-
exists(SsaExplicitUpdate v, Expr src |
535-
e = v.getAUse() and
536-
src = v.getDefiningExpr().(VariableAssign).getSource() and
533+
exists(SsaExplicitWrite v, Expr src |
534+
e = v.getARead() and
535+
src = v.getValue() and
537536
constantBooleanExpr(src, val)
538537
)
539538
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -668,9 +668,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
668668

669669
Expr getARead(Definition def) { result = getAUse(def) }
670670

671-
predicate ssaDefHasSource(WriteDefinition def) {
672-
def instanceof SsaExplicitUpdate or def instanceof SsaParameterInit
673-
}
671+
predicate ssaDefHasSource(WriteDefinition def) { def instanceof SsaExplicitWrite }
674672

675673
predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) {
676674
def instanceof SsaUncertainImplicitUpdate

0 commit comments

Comments
 (0)