aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/i386/pr39082-1.c
blob: 36d566dc160ba5f1f931070c5ed5e5e0a7896c0b (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
31
32
33
34
35
/* PR target/39082 */
/* { dg-do compile { target { ! { ia32 } } } } */
/* { dg-options "-O2" } */
/* { dg-additional-options "-mabi=sysv" { target x86_64-*-mingw* } } */

union un
{
  long double x;
  int i;
};

extern int bar1 (union un);
extern union un bar2 (int);

int
foo1 (union un u) /* { dg-message "note: the ABI of passing union with long double has changed in GCC 4.4" } */
{
  bar1 (u);
  return u.i;
}

int
foo2 (void)
{
  union un u;
  u.i = 1;
  return foo1 (u) + bar1 (u);
}

int
foo3 (int x)
{
  union un u = bar2 (x);
  return u.i;
}