summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c
blob: 999dc913a71ba3e738cb493dad196c37f025aa78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* Test that LoongArch backend ignores zero-sized fields of aggregates in
   argument passing.  */

/* { dg-do compile } */
/* { dg-options "-O2 -mdouble-float -mabi=lp64d" } */
/* { dg-final { scan-assembler "\\\$f1" } } */

struct test
{
  int empty1[0];
  double empty2[0];
  int : 0;
  float x;
  long empty3[0];
  long : 0;
  float y;
  unsigned : 0;
  char empty4[0];
};

extern void callee (struct test);

void
caller (void)
{
  struct test test;
  test.x = 114;
  test.y = 514;
  callee (test);
}