struct c {
    double a;
} __attribute((packed)) __attribute((aligned));

extern void abort(void);

double g_expect = 32.25;

void f(unsigned x, struct c y) {
    if (x != 0)
        abort();

    if (y.a != g_expect)
        abort();
}

struct c e = {64.25};

int main(void) {
    struct c d = {32.25};
    f(0, d);

    g_expect = 64.25;
    f(0, e);
    return 0;
}
