extern void abort(void);

typedef struct {
    long r[(19 + sizeof(long)) / (sizeof(long))];
} realvaluetype;

typedef void *tree;

static realvaluetype
real_value_from_int_cst(tree x, tree y) {
    realvaluetype r;
    int i;
    for (i = 0; i < sizeof(r.r) / sizeof(long); ++i)
        r.r[i] = -1;
    return r;
}

struct brfic_args {
    tree type;
    tree i;
    realvaluetype d;
};

static void
    build_real_from_int_cst_1(data) void *data;
{
    struct brfic_args *args = (struct brfic_args *)data;
    args->d = real_value_from_int_cst(args->type, args->i);
}

int main() {
    struct brfic_args args;

    __builtin_memset(&args, 0, sizeof(args));
    build_real_from_int_cst_1(&args);

    if (args.d.r[0] == 0)
        abort();
    return 0;
}
