let min_value_of_integral_type ?bitsize ty =
  let min_of signed size_in_bytes =
    let numbits =
      match bitsize with Some siz -> siz | None -> size_in_bytes * 8
    in
    if signed then
      Big_int.minus_big_int
        (Big_int.power_int_positive_int 2
          (numbits - 1))
    else Big_int.zero_big_int
  in
  match unrollType ty with
    | TInt(IBool,_attr) -> Big_int.zero_big_int
    | TInt(ik,_attr) ->
        min_of (isSigned ik) (size_in_bytes ik)
    | TEnum _ ->
        min_of
          theMachine.theMachine.Cil_types.enum_are_signed
          theMachine.theMachine.sizeof_enum
    | _ -> assert false