> int main(void) > { > spinlock_t lock = (spinlock_t) { .raw_lock = one_raw_spinlock() };
What exactly is this code expected to do? Call one_raw_spinlock and then throw away the result? If so, feel free to change gimplify_init_ctor_eval to do that. But again, if you expect "real" sets of zero sized fields to do something, you are going to run into major issues.