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

    | CChr c         ->
        data_of_integer (F.e_icst (string_of_int (Char.code c)))

    | CReal(f,_fk,_) ->
        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 (Int64.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