|
|
@ -167,13 +167,7 @@ module TransferFunctions (CFG : ProcCfg.S) = struct
|
|
|
|
Conjunction actual_indexes
|
|
|
|
Conjunction actual_indexes
|
|
|
|
| HilExp.AccessExpression access_expr -> (
|
|
|
|
| HilExp.AccessExpression access_expr -> (
|
|
|
|
let actual_access_path = HilExp.AccessExpression.to_access_path access_expr in
|
|
|
|
let actual_access_path = HilExp.AccessExpression.to_access_path access_expr in
|
|
|
|
if OwnershipDomain.is_owned actual_access_path caller_astate.ownership then
|
|
|
|
match OwnershipDomain.get_owned actual_access_path caller_astate.ownership with
|
|
|
|
(* the actual passed to the current callee is owned. drop all the conditional accesses
|
|
|
|
|
|
|
|
for that actual, since they're all safe *)
|
|
|
|
|
|
|
|
Conjunction actual_indexes
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
let base = fst actual_access_path in
|
|
|
|
|
|
|
|
match OwnershipDomain.get_owned (base, []) caller_astate.ownership with
|
|
|
|
|
|
|
|
| Owned ->
|
|
|
|
| Owned ->
|
|
|
|
(* the actual passed to the current callee is owned. drop all the conditional
|
|
|
|
(* the actual passed to the current callee is owned. drop all the conditional
|
|
|
|
accesses for that actual, since they're all safe *)
|
|
|
|
accesses for that actual, since they're all safe *)
|
|
|
|