Summary: Adds an mli and don't expose the internal Analyzer. Reviewed By: ezgicicek Differential Revision: D14258273 fbshipit-source-id: a000e5286master
							parent
							
								
									c2c876d435
								
							
						
					
					
						commit
						52e8f73060
					
				| @ -0,0 +1,35 @@ | |||||||
|  | (* | ||||||
|  |  * Copyright (c) 2019-present, Facebook, Inc. | ||||||
|  |  * | ||||||
|  |  * This source code is licensed under the MIT license found in the | ||||||
|  |  * LICENSE file in the root directory of this source tree. | ||||||
|  |  *) | ||||||
|  | 
 | ||||||
|  | open! IStd | ||||||
|  | module LoopHead = Procdesc.Node | ||||||
|  | module LoopHeads = Procdesc.NodeSet | ||||||
|  | 
 | ||||||
|  | (** Map control var -> loop head location  *) | ||||||
|  | module ControlMap : module type of PrettyPrintable.MakePPMap (Var) | ||||||
|  | 
 | ||||||
|  | module GuardNodes : module type of AbstractDomain.FiniteSet (Procdesc.Node) | ||||||
|  | 
 | ||||||
|  | (** Map exit node -> loop head set  *) | ||||||
|  | module ExitNodeToLoopHeads = Procdesc.NodeMap | ||||||
|  | 
 | ||||||
|  | (** Map loop head -> prune nodes in the loop guard  *) | ||||||
|  | module LoopHeadToGuardNodes = Procdesc.NodeMap | ||||||
|  | 
 | ||||||
|  | type invariant_map | ||||||
|  | 
 | ||||||
|  | type loop_control_maps = | ||||||
|  |   { exit_map: LoopHeads.t ExitNodeToLoopHeads.t | ||||||
|  |   ; loop_head_to_guard_nodes: GuardNodes.t LoopHeadToGuardNodes.t } | ||||||
|  | 
 | ||||||
|  | val compute_invariant_map : Procdesc.t -> Tenv.t -> loop_control_maps -> invariant_map | ||||||
|  | 
 | ||||||
|  | val compute_control_vars : | ||||||
|  |      invariant_map | ||||||
|  |   -> LoopInvariant.VarsInLoop.t LoopHeadToGuardNodes.t | ||||||
|  |   -> LoopHead.t | ||||||
|  |   -> Location.t ControlMap.t | ||||||
					Loading…
					
					
				
		Reference in new issue