@@ -17,8 +17,6 @@ private module SsaInput implements SsaImplCommon::InputSig<Location> {
1717
1818 BasicBlock getABasicBlockSuccessor ( BasicBlock bb ) { result = bb .getASuccessor ( ) }
1919
20- class ExitBasicBlock extends BasicBlock , ControlFlow:: BasicBlocks:: ExitBlock { }
21-
2220 class SourceVariable = Ssa:: SourceVariable ;
2321
2422 /**
@@ -784,7 +782,9 @@ private predicate adjacentDefReachesUncertainRead(
784782
785783/** Same as `lastRefRedef`, but skips uncertain reads. */
786784pragma [ nomagic]
787- private predicate lastRefSkipUncertainReads ( Definition def , SsaInput:: BasicBlock bb , int i ) {
785+ deprecated private predicate lastRefSkipUncertainReads (
786+ Definition def , SsaInput:: BasicBlock bb , int i
787+ ) {
788788 Impl:: lastRef ( def , bb , i ) and
789789 not SsaInput:: variableRead ( bb , i , def .getSourceVariable ( ) , false )
790790 or
@@ -794,6 +794,15 @@ private predicate lastRefSkipUncertainReads(Definition def, SsaInput::BasicBlock
794794 )
795795}
796796
797+ pragma [ nomagic]
798+ deprecated predicate lastReadSameVar ( Definition def , ControlFlow:: Node cfn ) {
799+ exists ( ControlFlow:: BasicBlock bb , int i |
800+ lastRefSkipUncertainReads ( def , bb , i ) and
801+ variableReadActual ( bb , i , _) and
802+ cfn = bb .getNode ( i )
803+ )
804+ }
805+
797806cached
798807private module Cached {
799808 cached
@@ -957,15 +966,6 @@ private module Cached {
957966 )
958967 }
959968
960- cached
961- predicate lastReadSameVar ( Definition def , ControlFlow:: Node cfn ) {
962- exists ( ControlFlow:: BasicBlock bb , int i |
963- lastRefSkipUncertainReads ( def , bb , i ) and
964- variableReadActual ( bb , i , _) and
965- cfn = bb .getNode ( i )
966- )
967- }
968-
969969 cached
970970 Definition uncertainWriteDefinitionInput ( UncertainWriteDefinition def ) {
971971 Impl:: uncertainWriteDefinitionInput ( def , result )
@@ -1119,7 +1119,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
11191119 exists ( ConditionBlock conditionBlock , ControlFlow:: SuccessorTypes:: ConditionalSuccessor s |
11201120 guard .getAControlFlowNode ( ) = conditionBlock .getLastNode ( ) and
11211121 s .getValue ( ) = branch and
1122- conditionBlock .controls ( bb , s )
1122+ conditionBlock .edgeDominates ( bb , s )
11231123 )
11241124 }
11251125
0 commit comments