@@ -1247,13 +1247,14 @@ private predicate storeCand2(Content f, boolean stored, Configuration conf) {
1247
1247
1248
1248
/**
1249
1249
* Holds if `f` is the target of both a store and a read in the path graph
1250
- * covered by `nodeCand2`. `apNonEmpty` indiciates whether some access path
1251
- * before the store (and after the read) is non-empty.
1250
+ * covered by `nodeCand2`.
1252
1251
*/
1253
1252
pragma [ noinline]
1254
- private predicate readStoreCand ( Content f , boolean apNonEmpty , Configuration conf ) {
1255
- storeCand2 ( f , apNonEmpty , conf ) and
1256
- readCand2 ( f , apNonEmpty , conf )
1253
+ private predicate readStoreCand ( Content f , Configuration conf ) {
1254
+ exists ( boolean apNonEmpty |
1255
+ storeCand2 ( f , apNonEmpty , conf ) and
1256
+ readCand2 ( f , apNonEmpty , conf )
1257
+ )
1257
1258
}
1258
1259
1259
1260
private predicate nodeCand2 ( NodeExt node , Configuration config ) { nodeCand2 ( node , _, _, config ) }
@@ -1392,30 +1393,20 @@ private module LocalFlowBigStep {
1392
1393
1393
1394
private import LocalFlowBigStep
1394
1395
1395
- pragma [ nomagic]
1396
- private predicate readExtCand2_0 ( Content f , NodeExt node1 , NodeExt node2 , Configuration config ) {
1397
- readExt ( node1 , f , node2 , config ) and
1398
- nodeCand2 ( node1 , _, true , config )
1399
- }
1400
-
1401
1396
pragma [ nomagic]
1402
1397
private predicate readExtCand2 ( NodeExt node1 , Content f , NodeExt node2 , Configuration config ) {
1403
- readExtCand2_0 ( f , node1 , node2 , config ) and
1398
+ readExt ( node1 , f , node2 , config ) and
1399
+ nodeCand2 ( node1 , _, true , unbind ( config ) ) and
1404
1400
nodeCand2 ( node2 , config ) and
1405
- readStoreCand ( f , _, unbind ( config ) )
1406
- }
1407
-
1408
- pragma [ nomagic]
1409
- private predicate storeExtCand2_0 ( Content f , NodeExt node1 , NodeExt node2 , Configuration config ) {
1410
- storeExt ( node1 , f , node2 , config ) and
1411
- nodeCand2 ( node1 , config )
1401
+ readStoreCand ( f , unbind ( config ) )
1412
1402
}
1413
1403
1414
1404
pragma [ nomagic]
1415
1405
private predicate storeExtCand2 ( NodeExt node1 , Content f , NodeExt node2 , Configuration config ) {
1416
- storeExtCand2_0 ( f , node1 , node2 , config ) and
1417
- nodeCand2 ( node2 , _, true , config ) and
1418
- readStoreCand ( f , _, unbind ( config ) )
1406
+ storeExt ( node1 , f , node2 , config ) and
1407
+ nodeCand2 ( node1 , config ) and
1408
+ nodeCand2 ( node2 , _, true , unbind ( config ) ) and
1409
+ readStoreCand ( f , unbind ( config ) )
1419
1410
}
1420
1411
1421
1412
private newtype TAccessPathFront =
@@ -2031,7 +2022,6 @@ private predicate readFwd(
2031
2022
2032
2023
pragma [ nomagic]
2033
2024
private predicate flowConsCand ( Content f , AccessPath ap , Configuration config ) {
2034
- flowConsCandFwd ( f , _, ap , unbind ( config ) ) and
2035
2025
exists ( NodeExt n , NodeExt mid |
2036
2026
flow ( mid , _, ap , config ) and
2037
2027
readFwd ( n , f , mid , _, ap , config )
0 commit comments