1/* Test long double on x86 and x86-64. */
2
3/* { dg-do run } */
4/* { dg-options -O2 } */
5
6extern void abort (void);
7
8__inline int
9__signbitl0 (long double __x)
10{
11  union { long double __l; int __i[3]; } __u = { __l: __x };
12
13  return (__u.__i[2] & 0x8000) != 0;
14}
15
16void
17foo (long double x, long double y)
18{
19  long double z = x / y;
20  if (__signbitl0 (x) && __signbitl0 (z))
21    abort ();
22}
23
24int main()
25{
26  if (sizeof (long double) > sizeof (double))
27    foo (-0.0, -1.0);
28  return 0;
29}
30