@@ -78,66 +78,6 @@ private predicate variableReadActual(Cfg::BasicBlock bb, int i, Variable v) {
7878 )
7979}
8080
81- pragma [ noinline]
82- deprecated private predicate adjacentDefReadExt (
83- DefinitionExt def , SsaInput:: BasicBlock bb1 , int i1 , SsaInput:: BasicBlock bb2 , int i2 ,
84- SsaInput:: SourceVariable v
85- ) {
86- Impl:: adjacentDefReadExt ( def , _, bb1 , i1 , bb2 , i2 ) and
87- v = def .getSourceVariable ( )
88- }
89-
90- deprecated private predicate adjacentDefReachesReadExt (
91- DefinitionExt def , SsaInput:: BasicBlock bb1 , int i1 , SsaInput:: BasicBlock bb2 , int i2
92- ) {
93- exists ( SsaInput:: SourceVariable v | adjacentDefReadExt ( def , bb1 , i1 , bb2 , i2 , v ) |
94- def .definesAt ( v , bb1 , i1 , _)
95- or
96- SsaInput:: variableRead ( bb1 , i1 , v , true )
97- )
98- or
99- exists ( SsaInput:: BasicBlock bb3 , int i3 |
100- adjacentDefReachesReadExt ( def , bb1 , i1 , bb3 , i3 ) and
101- SsaInput:: variableRead ( bb3 , i3 , _, false ) and
102- Impl:: adjacentDefReadExt ( def , _, bb3 , i3 , bb2 , i2 )
103- )
104- }
105-
106- deprecated private predicate adjacentDefReachesUncertainReadExt (
107- DefinitionExt def , SsaInput:: BasicBlock bb1 , int i1 , SsaInput:: BasicBlock bb2 , int i2
108- ) {
109- adjacentDefReachesReadExt ( def , bb1 , i1 , bb2 , i2 ) and
110- SsaInput:: variableRead ( bb2 , i2 , _, false )
111- }
112-
113- /** Same as `lastRefRedef`, but skips uncertain reads. */
114- pragma [ nomagic]
115- deprecated private predicate lastRefSkipUncertainReadsExt (
116- DefinitionExt def , SsaInput:: BasicBlock bb , int i
117- ) {
118- Impl:: lastRef ( def , bb , i ) and
119- not SsaInput:: variableRead ( bb , i , def .getSourceVariable ( ) , false )
120- or
121- exists ( SsaInput:: BasicBlock bb0 , int i0 |
122- Impl:: lastRef ( def , bb0 , i0 ) and
123- adjacentDefReachesUncertainReadExt ( def , bb , i , bb0 , i0 )
124- )
125- }
126-
127- /**
128- * Holds if the read of `def` at `read` may be a last read. That is, `read`
129- * can either reach another definition of the underlying source variable or
130- * the end of the CFG scope, without passing through another non-pseudo read.
131- */
132- pragma [ nomagic]
133- deprecated predicate lastRead ( Definition def , VarReadAccessCfgNode read ) {
134- exists ( Cfg:: BasicBlock bb , int i |
135- lastRefSkipUncertainReadsExt ( def , bb , i ) and
136- variableReadActual ( bb , i , _) and
137- read = bb .getNode ( i )
138- )
139- }
140-
14181cached
14282private module Cached {
14383 /**
0 commit comments