let name_of_integral_type ?bitsize ty =
  let name_it signed size_in_bytes =
    let numbits =
      match bitsize with Some siz -> siz | None -> size_in_bytes * 8
    in
    let name = (if signed then "" else "u") ^ "int" ^ (string_of_int numbits) in
    Hashtbl.replace all_integral_types name (ty,numbits);
    name
  in
  match unrollType ty with
    | TInt(IBool,_attr) -> "_bool"
    | TInt(ik,_attr) ->        
        name_it (isSigned ik) (size_in_bytes ik)
    | TEnum _ ->
        name_it
          theMachine.theMachine.Cil_types.enum_are_signed
          theMachine.theMachine.sizeof_enum
    | _ -> assert false