// APPLE LOCAL file radar 4646337
// { dg-do run { target *-*-darwin* } }

#include <cstdlib>

/* Test the size and alignment of fundamental C types for compliance
   with the IA-64 ABI.  */

enum A { a };

int main ()
{
  if (sizeof (char)                    !=  1)
    abort ();
  if (__alignof__ (char)               !=  1)
    abort ();
  if (sizeof (signed char)             !=  1)
    abort ();
  if (__alignof__ (signed char)        !=  1)
    abort ();
  if (sizeof (unsigned char)           !=  1)
    abort ();  
  if (__alignof__ (unsigned char)      !=  1)
    abort ();
  if (sizeof (short)                   !=  2)
    abort ();
  if (__alignof__ (short)              !=  2)
    abort ();
  if (sizeof (signed short)            !=  2)
    abort ();
  if (__alignof__ (signed short)       !=  2)
    abort ();
  if (sizeof (unsigned short)          !=  2)
    abort ();
  if (__alignof__ (unsigned short)     !=  2)
    abort ();
  if (sizeof (int)                     !=  4)
    abort ();
  if (__alignof__ (int)                !=  4)
    abort ();
  if (sizeof (signed int)              !=  4)
    abort ();
  if (__alignof__ (signed int)         !=  4)
    abort ();
  if (sizeof (unsigned int)            !=  4)
    abort ();
  if (__alignof__ (unsigned int)       !=  4)
    abort ();
#if defined(__x86_64__) || defined (__ppc64__)
  if (sizeof (long)                    !=  8)
    abort ();
  if (__alignof__ (long)               !=  8)
    abort ();
  if (sizeof (signed long)             !=  8)
    abort ();
  if (__alignof__ (signed long)        !=  8)
    abort ();
  if (sizeof (unsigned long)           !=  8)
    abort ();
  if (__alignof__ (unsigned long)      !=  8)
    abort ();
#else
  if (sizeof (long)                    !=  4)
    abort ();
  if (__alignof__ (long)               !=  4)
    abort ();
  if (sizeof (signed long)             !=  4)
    abort ();
  if (__alignof__ (signed long)        !=  4)
    abort ();
  if (sizeof (unsigned long)           !=  4)
    abort ();
  if (__alignof__ (unsigned long)      !=  4)
    abort ();
#endif /* __x86_64__ || __ppc64__ */
  if (sizeof (long long)               !=  8)
    abort ();
  if (__alignof__ (long long)          !=  8)
    abort ();
  if (sizeof (signed long long)        !=  8)
    abort ();
  if (__alignof__ (signed long long)   !=  8)
    abort ();
  if (sizeof (unsigned long long)      !=  8)
    abort ();
  if (__alignof__ (unsigned long long) !=  8)
    abort ();
  if (sizeof (enum A)                  !=  4)
    abort ();
  if (__alignof__ (enum A)             !=  4)
    abort ();
#ifdef HAVE_IA64_TYPES
  if (sizeof (__int64)                 !=  8)
    abort ();
  if (__alignof__ (__int64)            !=  8)
    abort ();
  if (sizeof (signed __int64)          !=  8)
    abort ();
  if (__alignof__ (signed ___int64)    !=  8)
    abort ();
  if (sizeof (unsigned __int64)        !=  8)
    abort ();
  if (__alignof__ (unsigned __int64)   !=  8)
    abort ();
  if (sizeof (__int128)                != 16)
    abort ();
  if (__alignof__ (__int128)           != 16)
    abort ();
  if (sizeof (signed __int128)         != 16)
    abort ();
  if (__alignof__ (signed ___int128)   != 16)
    abort ();
  if (sizeof (unsigned __int128)       != 16)
    abort ();
  if (__alignof__ (unsigned ___int128) != 16)
    abort ();
#endif  /* HAVE_IA64_TYPES  */
#if defined(__x86_64__) || defined (__ppc64__)
  if (sizeof (void *)                  !=  8)
    abort ();
  if (__alignof__ (void *)             !=  8)
    abort ();
  if (sizeof (void (*) ())             !=  8)
    abort ();
  if (__alignof__ (void (*) ())        !=  8)
    abort ();
#else
  if (sizeof (void *)                  !=  4)
    abort ();
  if (__alignof__ (void *)             !=  4)
    abort ();
  if (sizeof (void (*) ())             !=  4)
    abort ();
  if (__alignof__ (void (*) ())        !=  4)
    abort ();
#endif  /* __x86_64__ || __ppc64__ */
  if (sizeof (float)                   !=  4)
    abort ();
  if (__alignof__ (float)              !=  4)
    abort ();
  if (sizeof (double)                  !=  8)
    abort ();
  if (__alignof__ (double)             !=  8)
    abort ();
  if (sizeof (long double)             != 16)
    abort ();
  if (__alignof__ (long double)        != 16)
    abort ();
#ifdef HAVE_IA64_TYPES
  if (sizeof (__float80)               != 16)
    abort ();
  if (__alignof__ (__float80)          != 16)
    abort ();
  if (sizeof (__float128)              != 16)
    abort ();
  if (__alignof__ (__float128)         != 16)
    abort ();
#endif  /* HAVE_IA64_TYPES  */

  return 0;
}
