blob: 8455ac9ce1294e39c1b826c12230c343cdd360e2 [file] [log] [blame]
// { dg-do run { target { *-*-linux* } } }
// { dg-additional-options "-fschedule-insns2 -fstrict-aliasing" }
// { dg-additional-options "-lrt" }
#include <cstdint>
#include <cassert>
#include <time.h>
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);
}