let rec addr_of_data d = match d with
| D1null | D1addr _ | D1base _ | D1depl _ | D1shift _
-> unsupported "address of %a" pp_data d
| D1var (None, _) -> (* logic variable *) raise Not_found
| D1var (Some (vi, _), v) -> D1addr (vi, tau_of_var v)
| D1indir p -> p
| D1proj (s, ch) -> D1depl (addr_of_data s, ch)
| D1mu (s, _, _) | D1muRange (s, _) -> addr_of_data s
| D1muI _ | D1muIrange _ -> assert false