let import_function ~topify_arith_origin ~with_alarms info f e1 e2 =
try
let v1 = project_ival e1 in
let v2 = project_ival e2 in
inject_ival (f v1 v2)
with Not_based_on_null ->
(match with_alarms.imprecision_tracing with
| Aignore -> ()
| Acall f -> f ()
| Alog ->
match e1,e2 with
| Map _, Map _ ->
CilE.warn_once "Operation %a %s %a incurs a loss of precision"
pretty e1
info
pretty e2
| _ -> ());
join (topify_arith_origin e1) (topify_arith_origin e2)