20010124-1.c   [plain text]


/* Verify that structure return doesn't invoke memcpy on 
   overlapping objects.  */

extern void abort (void);

struct S {
  char stuff[1024];
};

union U {
  struct {
    int space;
    struct S s;
  } a;
  struct {
    struct S s;
    int space;
  } b;
};

struct S f(struct S *);
void g(union U *);

void main_test(void)
{
  union U u;
  u.b.s = f(&u.a.s);
  u.a.s = f(&u.b.s);
  g(&u);
}