
static int next_buffer = 0;
void bar(void);

static int t = 1, u = 0;

long foo(unsigned int offset) {
    unsigned i, buffer;
    int x;
    char *data;

    i = u;
    if (i)
        return i * 0xce2f;

    buffer = next_buffer;
    data = (char *)(buffer * 0xce2f);
    for (i = 0; i < 2; i++)
        bar();
    buffer = next_buffer;
    return buffer * 0xce2f + offset;
}

void bar(void) {
}

int main() {
    if (foo(3) != 3)
        __builtin_abort();
    next_buffer = 1;
    if (foo(2) != 0xce2f + 2)
        __builtin_abort();
    __builtin_exit(0);
}
