@ -392,24 +392,26 @@ let check_expensive_subtyping_rules { Callbacks.proc_desc; tenv; summary } overr
 
			
		
	
		
			
				
					module  Interprocedural  =  struct  
			
		
	
		
			
				
					  include  AbstractInterpreter . Interprocedural ( Summary ) 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  let  check_and_report  ( {  Callbacks . proc_desc ;  tenv  }  as  proc_data  )  :  Specs . summary  = 
 
			
		
	
		
			
				
					  let  check_and_report  ( {  Callbacks . proc_desc ;  tenv ;  summary }  as  callback )  :  Specs . summary  = 
 
			
		
	
		
			
				
					    let  proc_name  =  Procdesc . get_proc_name  proc_desc  in 
 
			
		
	
		
			
				
					    if  is_expensive  tenv  proc_name  then 
 
			
		
	
		
			
				
					      PatternMatch . override_iter  ( check_expensive_subtyping_rules  proc_data )  tenv  proc_name ; 
 
			
		
	
		
			
				
					      PatternMatch . override_iter  ( check_expensive_subtyping_rules  callback )  tenv  proc_name ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    let  initial  = 
 
			
		
	
		
			
				
					      ( AnnotReachabilityDomain . empty ,  Domain . TrackingDomain . NonBottom  Domain . TrackingVar . empty )  in 
 
			
		
	
		
			
				
					    let  compute_post  proc_data  = 
 
			
		
	
		
			
				
					      Option . map  ~ f : fst  ( Analyzer . compute_post  ~ initial  proc_data )  in 
 
			
		
	
		
			
				
					    let  updated_summary  :  Specs . summary  = 
 
			
		
	
		
			
				
					      compute_ and_store_post 
 
			
		
	
		
			
				
					      compute_ summary 
 
			
		
	
		
			
				
					        ~ compute_post : compute_post 
 
			
		
	
		
			
				
					        ~ make_extras : ProcData . make_empty_extras 
 
			
		
	
		
			
				
					        proc_data  in 
 
			
		
	
		
			
				
					        proc_desc 
 
			
		
	
		
			
				
					        tenv 
 
			
		
	
		
			
				
					        summary  in 
 
			
		
	
		
			
				
					    begin 
 
			
		
	
		
			
				
					      match  updated_summary . payload . annot_map  with 
 
			
		
	
		
			
				
					      |  Some  annot_map  -> 
 
			
		
	
		
			
				
					          List . iter  ~ f : ( report_src_snk_paths  proc_data  annot_map )  src_snk_pairs 
 
			
		
	
		
			
				
					          List . iter  ~ f : ( report_src_snk_paths  callback  annot_map )  src_snk_pairs 
 
			
		
	
		
			
				
					      |  None  -> 
 
			
		
	
		
			
				
					          () 
 
			
		
	
		
			
				
					    end ;