@@ -779,7 +779,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
779
779
pragma [ noinline]
780
780
predicate ssaDefReachesThroughBlock ( DefinitionExt def , BasicBlock bb ) {
781
781
exists ( SourceVariable v |
782
- ssaDefReachesEndOfBlockExt ( bb , def , v ) and
782
+ ssaDefReachesEndOfBlockExt0 ( bb , def , v ) and
783
783
not defOccursInBlock ( _, bb , v , _)
784
784
)
785
785
}
@@ -863,7 +863,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
863
863
predicate varBlockReachesExitExt ( DefinitionExt def , BasicBlock bb ) {
864
864
exists ( BasicBlock bb2 | varBlockReachesExt ( def , _, bb , bb2 ) |
865
865
not defOccursInBlock ( def , bb2 , _, _) and
866
- not ssaDefReachesEndOfBlockExt ( bb2 , def , _)
866
+ not ssaDefReachesEndOfBlockExt0 ( bb2 , def , _)
867
867
)
868
868
}
869
869
@@ -872,7 +872,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
872
872
exists ( BasicBlock bb2 , SourceVariable v |
873
873
varBlockReachesExt ( def , v , bb , bb2 ) and
874
874
not defOccursInBlock ( def , bb2 , _, _) and
875
- not ssaDefReachesEndOfBlockExt ( bb2 , def , _) and
875
+ not ssaDefReachesEndOfBlockExt0 ( bb2 , def , _) and
876
876
not any ( PhiReadNode phi ) .definesAt ( v , bb2 , _, _)
877
877
)
878
878
or
@@ -907,7 +907,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
907
907
* SSA definition of `v`.
908
908
*/
909
909
pragma [ nomagic]
910
- predicate ssaDefReachesEndOfBlockExt ( BasicBlock bb , DefinitionExt def , SourceVariable v ) {
910
+ private predicate ssaDefReachesEndOfBlockExt0 ( BasicBlock bb , DefinitionExt def , SourceVariable v ) {
911
911
exists ( int last |
912
912
last = maxSsaRefRank ( pragma [ only_bind_into ] ( bb ) , pragma [ only_bind_into ] ( v ) ) and
913
913
ssaDefReachesRank ( bb , def , last , v ) and
@@ -920,10 +920,12 @@ module Make<LocationSig Location, InputSig<Location> Input> {
920
920
// the node. If two definitions dominate a node then one must dominate the
921
921
// other, so therefore the definition of _closest_ is given by the dominator
922
922
// tree. Thus, reaching definitions can be calculated in terms of dominance.
923
- ssaDefReachesEndOfBlockExt ( getImmediateBasicBlockDominator ( bb ) , def , pragma [ only_bind_into ] ( v ) ) and
923
+ ssaDefReachesEndOfBlockExt0 ( getImmediateBasicBlockDominator ( bb ) , def , pragma [ only_bind_into ] ( v ) ) and
924
924
liveThroughExt ( bb , pragma [ only_bind_into ] ( v ) )
925
925
}
926
926
927
+ deprecated predicate ssaDefReachesEndOfBlockExt = ssaDefReachesEndOfBlockExt0 / 3 ;
928
+
927
929
/**
928
930
* NB: If this predicate is exposed, it should be cached.
929
931
*
@@ -955,7 +957,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
955
957
exists ( SourceVariable v , BasicBlock bbDef |
956
958
phi .definesAt ( v , bbDef , _, _) and
957
959
getABasicBlockPredecessor ( bbDef ) = bb and
958
- ssaDefReachesEndOfBlockExt ( bb , inp , v )
960
+ ssaDefReachesEndOfBlockExt0 ( bb , inp , v )
959
961
|
960
962
phi instanceof PhiNode or
961
963
phi instanceof PhiReadNode
@@ -973,7 +975,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
973
975
ssaDefReachesReadWithinBlock ( v , def , bb , i )
974
976
or
975
977
ssaRef ( bb , i , v , SsaActualRead ( ) ) and
976
- ssaDefReachesEndOfBlockExt ( getABasicBlockPredecessor ( bb ) , def , v ) and
978
+ ssaDefReachesEndOfBlockExt0 ( getABasicBlockPredecessor ( bb ) , def , v ) and
977
979
not ssaDefReachesReadWithinBlock ( v , _, bb , i )
978
980
}
979
981
0 commit comments