@@ -4175,49 +4175,6 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
4175
4175
)
4176
4176
}
4177
4177
4178
- private newtype TSummaryCtx =
4179
- TSummaryCtxNone ( ) or
4180
- TSummaryCtxSome ( ParamNodeEx p , FlowState state , DataFlowType t , AccessPath ap ) {
4181
- exists ( AccessPathApprox apa | ap .getApprox ( ) = apa |
4182
- Stage5:: parameterMayFlowThrough ( p , apa ) and
4183
- Stage5:: fwdFlow ( p , state , _, _, Option< DataFlowType > :: some ( t ) , _, _, apa , _) and
4184
- Stage5:: revFlow ( p , state , _)
4185
- )
4186
- }
4187
-
4188
- /**
4189
- * A context for generating flow summaries. This represents flow entry through
4190
- * a specific parameter with an access path of a specific shape.
4191
- *
4192
- * Summaries are only created for parameters that may flow through.
4193
- */
4194
- abstract private class SummaryCtx extends TSummaryCtx {
4195
- abstract string toString ( ) ;
4196
- }
4197
-
4198
- /** A summary context from which no flow summary can be generated. */
4199
- private class SummaryCtxNone extends SummaryCtx , TSummaryCtxNone {
4200
- override string toString ( ) { result = "<none>" }
4201
- }
4202
-
4203
- /** A summary context from which a flow summary can be generated. */
4204
- private class SummaryCtxSome extends SummaryCtx , TSummaryCtxSome {
4205
- private ParamNodeEx p ;
4206
- private FlowState s ;
4207
- private DataFlowType t ;
4208
- private AccessPath ap ;
4209
-
4210
- SummaryCtxSome ( ) { this = TSummaryCtxSome ( p , s , t , ap ) }
4211
-
4212
- ParamNodeEx getParamNode ( ) { result = p }
4213
-
4214
- private string ppTyp ( ) { result = t .toString ( ) and result != "" }
4215
-
4216
- override string toString ( ) { result = p + concat ( " : " + this .ppTyp ( ) ) + " " + ap }
4217
-
4218
- Location getLocation ( ) { result = p .getLocation ( ) }
4219
- }
4220
-
4221
4178
pragma [ nomagic]
4222
4179
private predicate stage5ConsCand ( Content c , DataFlowType t , AccessPathFront apf , int len ) {
4223
4180
Stage5:: consCand ( c , t , any ( AccessPathApprox ap | ap .getFront ( ) = apf and ap .len ( ) = len - 1 ) )
@@ -4448,16 +4405,6 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
4448
4405
4449
4406
/** Gets a textual representation of this access path. */
4450
4407
abstract string toString ( ) ;
4451
-
4452
- /** Holds if `node`, which is the target of a store step, clears data stored in this access path. */
4453
- pragma [ nomagic]
4454
- predicate storeTargetIsClearedAt ( NodeEx node ) {
4455
- exists ( AccessPathApprox apa |
4456
- apa = this .getApprox ( ) and
4457
- Stage5:: revFlowAp ( node , apa ) and
4458
- Stage4Param:: clearContent ( node , apa .getHead ( ) , true )
4459
- )
4460
- }
4461
4408
}
4462
4409
4463
4410
private class AccessPathNil extends AccessPath , TAccessPathNil {
0 commit comments