@@ -877,13 +877,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
877
877
878
878
pragma [ nomagic]
879
879
predicate storeStepCand (
880
- NodeEx node1 , Ap ap1 , Content c , NodeEx node2 , DataFlowType contentType ,
881
- DataFlowType containerType
880
+ NodeEx node1 , Content c , NodeEx node2 , DataFlowType contentType , DataFlowType containerType
882
881
) {
883
882
revFlowIsReadAndStored ( c ) and
884
883
revFlow ( node2 ) and
885
- store ( node1 , c , node2 , contentType , containerType ) and
886
- exists ( ap1 )
884
+ store ( node1 , c , node2 , contentType , containerType )
887
885
}
888
886
889
887
pragma [ nomagic]
@@ -1292,8 +1290,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1292
1290
predicate returnMayFlowThrough ( RetNodeEx ret , ReturnKindExt kind ) ;
1293
1291
1294
1292
predicate storeStepCand (
1295
- NodeEx node1 , Ap ap1 , Content c , NodeEx node2 , DataFlowType contentType ,
1296
- DataFlowType containerType
1293
+ NodeEx node1 , Content c , NodeEx node2 , DataFlowType contentType , DataFlowType containerType
1297
1294
) ;
1298
1295
1299
1296
predicate readStepCand ( NodeEx n1 , Content c , NodeEx n2 ) ;
@@ -1451,7 +1448,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1451
1448
pragma [ nomagic]
1452
1449
private predicate compatibleContainer0 ( ApHeadContent apc , DataFlowType containerType ) {
1453
1450
exists ( DataFlowType containerType0 , Content c |
1454
- PrevStage:: storeStepCand ( _, _ , c , _, _, containerType0 ) and
1451
+ PrevStage:: storeStepCand ( _, c , _, _, containerType0 ) and
1455
1452
not isTopType ( containerType0 ) and
1456
1453
compatibleTypesCached ( containerType0 , containerType ) and
1457
1454
apc = projectToHeadContent ( c )
@@ -1461,7 +1458,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1461
1458
pragma [ nomagic]
1462
1459
private predicate topTypeContent ( ApHeadContent apc ) {
1463
1460
exists ( DataFlowType containerType0 , Content c |
1464
- PrevStage:: storeStepCand ( _, _ , c , _, _, containerType0 ) and
1461
+ PrevStage:: storeStepCand ( _, c , _, _, containerType0 ) and
1465
1462
isTopType ( containerType0 ) and
1466
1463
apc = projectToHeadContent ( c )
1467
1464
)
@@ -1646,11 +1643,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1646
1643
NodeEx node1 , Typ t1 , Ap ap1 , TypOption stored1 , Content c , Typ t2 , TypOption stored2 ,
1647
1644
NodeEx node2 , FlowState state , Cc cc , SummaryCtx summaryCtx
1648
1645
) {
1649
- exists ( DataFlowType contentType , DataFlowType containerType , ApApprox apa1 |
1650
- fwdFlow ( node1 , state , cc , summaryCtx , t1 , ap1 , apa1 , stored1 ) and
1646
+ exists ( DataFlowType contentType , DataFlowType containerType |
1647
+ fwdFlow ( node1 , state , cc , summaryCtx , t1 , ap1 , _ , stored1 ) and
1651
1648
not outBarrier ( node1 , state ) and
1652
1649
not inBarrier ( node2 , state ) and
1653
- PrevStage:: storeStepCand ( node1 , apa1 , c , node2 , contentType , containerType ) and
1650
+ PrevStage:: storeStepCand ( node1 , c , node2 , contentType , containerType ) and
1654
1651
t2 = getTyp ( containerType ) and
1655
1652
// We need to typecheck stores here, since reverse flow through a getter
1656
1653
// might have a different type here compared to inside the getter.
@@ -2443,11 +2440,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2443
2440
2444
2441
pragma [ nomagic]
2445
2442
predicate storeStepCand (
2446
- NodeEx node1 , Ap ap1 , Content c , NodeEx node2 , DataFlowType contentType ,
2443
+ NodeEx node1 , Content c , NodeEx node2 , DataFlowType contentType ,
2447
2444
DataFlowType containerType
2448
2445
) {
2449
- exists ( Ap ap2 |
2450
- PrevStage:: storeStepCand ( node1 , _ , c , node2 , contentType , containerType ) and
2446
+ exists ( Ap ap2 , Ap ap1 |
2447
+ PrevStage:: storeStepCand ( node1 , c , node2 , contentType , containerType ) and
2451
2448
revFlowStore ( ap2 , c , ap1 , node1 , _, node2 , _, _) and
2452
2449
revFlowConsCand ( ap2 , c , ap1 )
2453
2450
)
@@ -2664,7 +2661,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2664
2661
or
2665
2662
node instanceof OutNodeEx
2666
2663
or
2667
- storeStepCand ( _, _, _ , node , _, _)
2664
+ storeStepCand ( _, _, node , _, _)
2668
2665
or
2669
2666
readStepCand ( _, _, node )
2670
2667
or
@@ -2698,7 +2695,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2698
2695
callEdgeReturn ( _, _, node , _, next , _) and
2699
2696
apNext = ap
2700
2697
or
2701
- storeStepCand ( node , _, _ , next , _, _)
2698
+ storeStepCand ( node , _, next , _, _)
2702
2699
or
2703
2700
readStepCand ( node , _, next )
2704
2701
)
@@ -3950,7 +3947,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3950
3947
PrevStage:: readStepCand ( _, pragma [ only_bind_into ] ( c ) , _) and
3951
3948
c = cs .getAReadContent ( ) and
3952
3949
clearSet ( node , cs ) and
3953
- if PrevStage:: storeStepCand ( _, _, _ , node , _, _)
3950
+ if PrevStage:: storeStepCand ( _, _, node , _, _)
3954
3951
then isStoreTarget = true
3955
3952
else isStoreTarget = false
3956
3953
)
0 commit comments