]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / testsuite / g++.old-deja / g++.abi / bitfields.C
diff --git a/gcc/testsuite/g++.old-deja/g++.abi/bitfields.C b/gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
deleted file mode 100644 (file)
index f7d9eaf..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-// Skip if not target: i?86-*-linux* i?86-*-freebsd*
-// Special g++ Options: -malign-double
-// Origin: Alex Samuel <samuel@codesourcery.com>
-
-/* Test the layout of bitfields in C aggretagtes for compliance with
-   the IA-64 ABI.  */
-
-#include <cstring>
-
-template<typename T>
-inline unsigned
-alignmentof ()
-{
-  struct S
-  {
-    char start_;
-    T object_;
-  };
-
-  return (unsigned) & ((S *) 0)->object_;
-}
-
-/* Computes the alignment, in bytes, of TYPE.  */
-
-#define alignof(type) (alignmentof<type> ())
-
-/* Returns true iff all the bits in the range 
-   START_BIT <= bit < START_BIT + NUM_BITS, and only those bits, are
-   set in the region of memory starting at BUF of LENGTH bytes.  */
-
-bool
-check_bits (char *buf,
-           unsigned length,
-           unsigned start_bit,
-           unsigned num_bits)
-{
-  for (unsigned bit = 0; bit < 8 * length; ++bit) {
-    bool is_set = (buf[bit / 8] & (1 << (bit % 8))) != 0;
-    if (start_bit <= bit && bit < start_bit + num_bits) {
-      if (! is_set)
-       return false;
-    }
-    else {
-      if (is_set)
-       return false;
-    }
-  }
-  return true;
-}
-
-/* Creates a variable of type AGGREGATE, sets FIELD to -1, and
-   verifies that NUM_BITS bits starting at START_BIT, and no other
-   bits, are set.  If the check fails, returns with value RVAL.  */
-
-#define CHECK_FIELD(AGGREGATE, FIELD, START_BIT, NUM_BITS, RVAL)          \
-  do {                                                                    \
-    AGGREGATE a__;                                                        \
-    std::memset (& a__, 0, sizeof (a__));                                 \
-    a__.FIELD = -1;                                                       \
-    if (! check_bits ((char *) & a__, sizeof (a__), START_BIT, NUM_BITS)) \
-      return RVAL;                                                        \
-  } while (0);
-
-
-
-/* Structs S1, S2, S3, S4, and union U5 are taken from Intel, "IA-64
-   Software Conventions and Runtime Architecture Guide", version of
-   August 1999.  */
-
-struct S1
-{
-  int       j : 5;
-  int       k : 6;
-  int       m : 7;
-};
-
-#ifdef HAVE_IA64_TYPES
-struct S2
-{
-  short     s : 9;
-  __int64   j : 9;
-  char      c    ;
-  short     t : 9;
-  short     u : 9;
-  char      d    ;
-};
-#endif  /* HAVE_IA64_TYPES  */
-
-struct S3
-{
-  char      c    ;
-  short     s : 8;
-};
-
-union U4
-{
-  char      c    ;
-  short     s : 8;
-};
-
-struct S5
-{
-  char      c    ;
-  int         : 0;
-  char      d    ;
-  short       : 9;
-  char      e    ;
-  char        : 0;
-};
-
-
-int
-main ()
-{
-  if (sizeof (struct S1)               !=  4)
-    return 1;
-  if (alignof (struct S1)              !=  4)
-    return 2;
-  CHECK_FIELD (S1, j,  0,  5,  3);
-  CHECK_FIELD (S1, k,  5,  6,  4);
-  CHECK_FIELD (S1, m, 11,  7,  5);
-
-#ifdef HAVE_IA64_TYPES
-  if (sizeof (struct S2)               != 16)
-    return 6;
-  if (alignof (struct S2)              !=  8)
-    return 7;
-  CHECK_FIELD (S2, s,  0,  9,  8);
-  CHECK_FIELD (S2, j,  9,  9,  9);
-  CHECK_FIELD (S2, c, 24,  8, 10);
-  CHECK_FIELD (S2, t, 32,  9, 11);
-  CHECK_FIELD (S2, u, 48,  9, 12);
-  CHECK_FIELD (S2, d, 64,  8, 13);
-#endif  /* HAVE_IA64_TYPES  */
-
-  if (sizeof (struct S3)               !=  2)
-    return 14;
-  if (sizeof (struct S3)               !=  2)
-    return 15;
-  CHECK_FIELD (S3, c,  0,  8, 16);
-  CHECK_FIELD (S3, s,  8,  8, 17);
-
-  if (sizeof (union U4)                !=  2)
-    return 18;
-  if (alignof (union U4)               !=  2)
-    return 19;
-  CHECK_FIELD (U4, c,  0,  8, 20);
-  CHECK_FIELD (U4, s,  0,  8, 21);
-
-  if (sizeof (struct S5)               !=  9)
-    return 22;
-  if (alignof (struct S5)              !=  1)
-    return 23;
-  CHECK_FIELD (S5, c,  0,  8, 24);
-  CHECK_FIELD (S5, d, 32,  8, 25);
-  CHECK_FIELD (S5, e, 64,  8, 26);
-
-  return 0;
-}