On s390x it produces this insn:
(insn 8 7 9 3 323444.c:15 (set (mem/s:DI (reg:DI 46) [0 S8 A64])
(mem/s:DI (reg/v/f:DI 45 [ tp ]) [0 S8 A64])) -1 (nil))
Note that the alignments are 64 bit again, despite the field being
packed. mep-elf has similar results.
void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n);
struct timeval {
long tv_sec;
};
struct outdata {
long align;
char seq;
struct timeval tv __attribute__((packed));
};
void send_probe(struct outdata *outdata, struct timeval *tp)
{
memcpy(&(outdata->tv), tp, sizeof outdata->tv);
}
send_probe (struct outdata * outdata, struct timeval * tp)
{
struct timeval * D.1971;
# BLOCK 2 freq:10000
# PRED: ENTRY [100.0%] (fallthru,exec)
D.1971_2 = &outdata_1(D)->tv;
memcpy (D.1971_2, tp_3(D), 8); [tail call]
return;
# SUCC: EXIT [100.0%]
}