// { dg-do run { target { *-*-linux* } } } // { dg-additional-options "-fschedule-insns2 -fstrict-aliasing" } // { dg-additional-options "-lrt" } #include #include #include struct ID { uint64_t value; }; uint64_t value(ID id) { return id.value; } uint64_t gen { 1000 }; struct Msg { uint64_t time; ID id; }; struct V { V() { } V(Msg const & msg) : msg(msg) { } Msg & get() { return msg; } Msg msg; char pad[237 - sizeof(Msg)]; }; struct T : V { using V::V; }; Msg init_msg() { Msg msg; timespec t; clock_gettime(CLOCK_REALTIME, &t); msg.time = t.tv_sec + t.tv_nsec; msg.id.value = ++gen; return msg; } int main() { T t; t = init_msg(); assert(value(t.get().id) == 1001); }