let data_const = function
    | CInt64(k,_,_) ->
        data_of_integer (F.e_icst (My_bigint.to_string k))

    | CChr c ->
        data_of_integer (F.e_icst (Int64.to_string (Ctypes.char c)))

    | CReal(f,_,_) ->
        data_of_real (F.e_rcst (string_of_float f))

    | CEnum e ->
        let machdep = true in
        let e' = Cil.constFold machdep e.eival in
        begin
          match e'.enode with
            | Const CInt64(k,_,_) ->
                data_of_integer (F.e_icst (My_bigint.to_string k))
            | Const CChr c ->
                data_of_integer (F.e_icst (string_of_int (Char.code c)))
            | _ -> WpLog.fatal "unrecognized sizeof/alignof "
        end
    | CWStr _        ->
        WpLog.not_yet_implemented "wide character string constant"
    | CStr s         ->
        WpLog.not_yet_implemented "character string constant (%S)" s