@@ -4175,49 +4175,6 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
41754175 )
41764176 }
41774177
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-
42214178 pragma [ nomagic]
42224179 private predicate stage5ConsCand ( Content c , DataFlowType t , AccessPathFront apf , int len ) {
42234180 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> {
44484405
44494406 /** Gets a textual representation of this access path. */
44504407 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- }
44614408 }
44624409
44634410 private class AccessPathNil extends AccessPath , TAccessPathNil {
0 commit comments