@ -587,7 +587,10 @@ type resolve_and_analyze_result =
analyzed * )
analyzed * )
let resolve_and_analyze
let resolve_and_analyze
{ InterproceduralAnalysis . analyze_dependency ; analyze_pdesc_dependency ; proc_desc ; tenv }
{ InterproceduralAnalysis . analyze_dependency ; analyze_pdesc_dependency ; proc_desc ; tenv }
? ( has_clang_model = false ) prop args callee_proc_name call_flags : resolve_and_analyze_result =
~ has_clang_model prop args callee_proc_name call_flags : resolve_and_analyze_result =
if has_clang_model then
{ resolved_pname = callee_proc_name ; resolved_procdesc_opt = None ; resolved_summary_opt = None }
else
(* TODO ( #15748878 ) : Fix conflict with method overloading by encoding in the procedure name
(* TODO ( #15748878 ) : Fix conflict with method overloading by encoding in the procedure name
whether the method is defined or generated by the specialization * )
whether the method is defined or generated by the specialization * )
let analyze_ondemand resolved_pname =
let analyze_ondemand resolved_pname =
@ -605,8 +608,8 @@ let resolve_and_analyze
(* It is possible that the types of the arguments are not as precise as the type of
(* It is possible that the types of the arguments are not as precise as the type of
the objects in the heap , so we should update them to get the best results . * )
the objects in the heap , so we should update them to get the best results . * )
let resolved_args = resolve_args prop args in
let resolved_args = resolve_args prop args in
SpecializeProcdesc . with_formals_types ~ has_clang_model callee_proc_desc
SpecializeProcdesc . with_formals_types callee_proc_desc resolved_pname
resolved_pname resolved_args )
resolved_args )
in
in
( resolved_proc_desc_option
( resolved_proc_desc_option
, Option . bind resolved_proc_desc_option ~ f : ( fun pdesc ->
, Option . bind resolved_proc_desc_option ~ f : ( fun pdesc ->
@ -1158,7 +1161,8 @@ let rec sym_exec
norm_args
norm_args
in
in
let resolve_and_analyze_result =
let resolve_and_analyze_result =
resolve_and_analyze analysis_data norm_prop norm_args callee_pname call_flags
resolve_and_analyze ~ has_clang_model : false analysis_data norm_prop norm_args
callee_pname call_flags
in
in
let resolved_pname = resolve_and_analyze_result . resolved_pname in
let resolved_pname = resolve_and_analyze_result . resolved_pname in
match resolve_and_analyze_result . resolved_summary_opt with
match resolve_and_analyze_result . resolved_summary_opt with