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%]

}

Reply via email to