let rec logic_data d = match d with
      | F.D1null | F.D1addr _ -> false
      | F.D1var (None, _) -> true
      | F.D1var (Some _, _) -> false
      | F.D1indir p ->
          if logic_data p then
            unsupported "indirect access to logic data %a" F.pp_data d
          else false
      | F.D1base p | F.D1depl (p, _) | F.D1shift (p, _) |  F.D1proj (p, _)
      | F.D1mu (p,_,_) | F.D1muRange (p,_) 
      |  F.D1muI (p,_,_) | F.D1muIrange (p,_)->
          logic_data p