Skip to content

Commit 2cc6ffb

Browse files
committed
C++: Fix ql-for-ql findings.
1 parent 5ed0222 commit 2cc6ffb

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2290,9 +2290,11 @@ private predicate controls(IRGuardCondition g, Node n, boolean edge) {
22902290
module BarrierGuard<guardChecksSig/3 guardChecks> {
22912291
bindingset[value, n]
22922292
pragma[inline_late]
2293-
private predicate convertedExprHasValueNumber(Expr e, ValueNumber value, Node n) {
2294-
e = value.getAnInstruction().getConvertedResultExpression() and
2295-
n.asConvertedExpr() = e
2293+
private predicate convertedExprHasValueNumber(ValueNumber value, Node n) {
2294+
exists(Expr e |
2295+
e = value.getAnInstruction().getConvertedResultExpression() and
2296+
n.asConvertedExpr() = e
2297+
)
22962298
}
22972299

22982300
/**
@@ -2328,8 +2330,8 @@ module BarrierGuard<guardChecksSig/3 guardChecks> {
23282330
* NOTE: If an indirect expression is tracked, use `getAnIndirectBarrierNode` instead.
23292331
*/
23302332
Node getABarrierNode() {
2331-
exists(IRGuardCondition g, Expr e, ValueNumber value, boolean edge |
2332-
convertedExprHasValueNumber(e, value, result) and
2333+
exists(IRGuardCondition g, ValueNumber value, boolean edge |
2334+
convertedExprHasValueNumber(value, result) and
23332335
guardChecks(g,
23342336
pragma[only_bind_into](value.getAnInstruction().getConvertedResultExpression()), edge) and
23352337
controls(g, result, edge)
@@ -2383,10 +2385,12 @@ module BarrierGuard<guardChecksSig/3 guardChecks> {
23832385
bindingset[value, n]
23842386
pragma[inline_late]
23852387
private predicate indirectConvertedExprHasValueNumber(
2386-
Expr e, int indirectionIndex, ValueNumber value, Node n
2388+
int indirectionIndex, ValueNumber value, Node n
23872389
) {
2388-
e = value.getAnInstruction().getConvertedResultExpression() and
2389-
n.asIndirectConvertedExpr(indirectionIndex) = e
2390+
exists(Expr e |
2391+
e = value.getAnInstruction().getConvertedResultExpression() and
2392+
n.asIndirectConvertedExpr(indirectionIndex) = e
2393+
)
23902394
}
23912395

23922396
/**
@@ -2424,8 +2428,8 @@ module BarrierGuard<guardChecksSig/3 guardChecks> {
24242428
* NOTE: If a non-indirect expression is tracked, use `getABarrierNode` instead.
24252429
*/
24262430
Node getAnIndirectBarrierNode(int indirectionIndex) {
2427-
exists(IRGuardCondition g, Expr e, ValueNumber value, boolean edge |
2428-
indirectConvertedExprHasValueNumber(e, indirectionIndex, value, result) and
2431+
exists(IRGuardCondition g, ValueNumber value, boolean edge |
2432+
indirectConvertedExprHasValueNumber(indirectionIndex, value, result) and
24292433
guardChecks(g,
24302434
pragma[only_bind_into](value.getAnInstruction().getConvertedResultExpression()), edge) and
24312435
controls(g, result, edge)
@@ -2466,16 +2470,18 @@ private EdgeKind getConditionalEdge(boolean branch) {
24662470
module InstructionBarrierGuard<instructionGuardChecksSig/3 instructionGuardChecks> {
24672471
bindingset[value, n]
24682472
pragma[inline_late]
2469-
private predicate operandHasValueNumber(Operand use, ValueNumber value, Node n) {
2470-
use = value.getAnInstruction().getAUse() and
2471-
n.asOperand() = use
2473+
private predicate operandHasValueNumber(ValueNumber value, Node n) {
2474+
exists(Operand use |
2475+
use = value.getAnInstruction().getAUse() and
2476+
n.asOperand() = use
2477+
)
24722478
}
24732479

24742480
/** Gets a node that is safely guarded by the given guard check. */
24752481
Node getABarrierNode() {
2476-
exists(IRGuardCondition g, ValueNumber value, boolean edge, Operand use |
2482+
exists(IRGuardCondition g, ValueNumber value, boolean edge |
24772483
instructionGuardChecks(g, pragma[only_bind_into](value.getAnInstruction()), edge) and
2478-
operandHasValueNumber(use, value, result) and
2484+
operandHasValueNumber(value, result) and
24792485
controls(g, result, edge)
24802486
)
24812487
or

0 commit comments

Comments
 (0)