let dispatch_var var =
match case_of_optimization
(Wp_parameters.LogicVar.get ()) (Wp_parameters.RefVar.get()) with
| Nothing -> Cvar
| Half ->
compute();
if AddrTaken.mem var then Cvar else Fvar
| All ->
compute();
if is_formal_var_type var then
begin
if ByValue.mem var then
if AddrTaken.mem var then Cvar else Fvar
else
( try let (n,_) = ByPReference.find var in PRpar n
with Not_found ->
(try let (n,_) = ByAReference.find var in ARpar n
with Not_found -> Cvar ))
end
else
begin
if AddrTaken.mem var then Cvar
else
(if ArgAReference.mem var then ARarg
else (if ArgPReference.mem var
then PRarg else Fvar))
end