1/* PR middle-end/37870 */
2/* { dg-do run } */
3/* { dg-options "-O2" } */
4
5unsigned int
6foo (long double x)
7{
8  struct { char a[8]; unsigned int b:7; } c;
9  __builtin_memcpy (&c, &x, sizeof (c));
10  return c.b;
11}
12
13unsigned int
14bar (long double x)
15{
16  union { struct { char a[8]; unsigned int b:7; } c; long double d; } u;
17  u.d = x;
18  return u.c.b;
19}
20
21int
22main (void)
23{
24  if (foo (1.245L) != bar (1.245L)
25      || foo (245.67L) != bar (245.67L)
26      || foo (0.00567L) != bar (0.00567L))
27    __builtin_abort ();
28  return 0;
29}
30