mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-21 08:03:41 +08:00
bitfield4.c: New test.
* g++.dg/abi/bitfield4.c: New test. * gcc.dg/bitfld-4.c: New test. From-SVN: r56140
This commit is contained in:
parent
5615d8fd50
commit
6fde981568
@ -1,3 +1,8 @@
|
||||
2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.dg/abi/bitfield4.c: New test.
|
||||
* gcc.dg/bitfld-4.c: New test.
|
||||
|
||||
2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.dg/other/packed1.C: New test.
|
||||
|
41
gcc/testsuite/g++.dg/abi/bitfield4.C
Normal file
41
gcc/testsuite/g++.dg/abi/bitfield4.C
Normal file
@ -0,0 +1,41 @@
|
||||
/* { dg-do run } */
|
||||
|
||||
/* Check bitfields and non-bitfields are aligned & sized similarly.
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation Inc
|
||||
Contributed by Nathan Sidwell <nathan@codesourcery.com>
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static int fail;
|
||||
|
||||
#define CHECK1(N, T) do { \
|
||||
typedef struct Field_##N { char c; T f; } Field_##N; \
|
||||
typedef struct BitField_##N { char c; T f : sizeof (T) * CHAR_BIT; } BitField_##N; \
|
||||
if (sizeof (Field_##N) != sizeof (BitField_##N)) { \
|
||||
fail = 1; printf ("sizeof %s failed\n", #T); \
|
||||
} \
|
||||
if (__alignof__ (Field_##N) != __alignof__ (BitField_##N)) { \
|
||||
fail = 1; printf ("__alignof__ %s failed\n", #T); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(N, T) do { \
|
||||
CHECK1(N, T); \
|
||||
CHECK1 (s##N, signed T); \
|
||||
CHECK1 (u##N, unsigned T); \
|
||||
} while (0)
|
||||
|
||||
int main ()
|
||||
{
|
||||
|
||||
CHECK (c, char);
|
||||
CHECK (s, short);
|
||||
CHECK (i, int);
|
||||
CHECK (l, long);
|
||||
CHECK (ll, long long);
|
||||
|
||||
return fail;
|
||||
}
|
41
gcc/testsuite/gcc.dg/bitfld-4.c
Normal file
41
gcc/testsuite/gcc.dg/bitfld-4.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* { dg-do run } */
|
||||
|
||||
/* Check bitfields and non-bitfields are aligned & sized similarly.
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation Inc
|
||||
Contributed by Nathan Sidwell <nathan@codesourcery.com>
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static int fail;
|
||||
|
||||
#define CHECK1(N, T) do { \
|
||||
typedef struct Field_##N { char c; T f; } Field_##N; \
|
||||
typedef struct BitField_##N { char c; T f : sizeof (T) * CHAR_BIT; } BitField_##N; \
|
||||
if (sizeof (Field_##N) != sizeof (BitField_##N)) { \
|
||||
fail = 1; printf ("sizeof %s failed\n", #T); \
|
||||
} \
|
||||
if (__alignof__ (Field_##N) != __alignof__ (BitField_##N)) { \
|
||||
fail = 1; printf ("__alignof__ %s failed\n", #T); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(N, T) do { \
|
||||
CHECK1(N, T); \
|
||||
CHECK1 (s##N, signed T); \
|
||||
CHECK1 (u##N, unsigned T); \
|
||||
} while (0)
|
||||
|
||||
int main ()
|
||||
{
|
||||
|
||||
CHECK (c, char);
|
||||
CHECK (s, short);
|
||||
CHECK (i, int);
|
||||
CHECK (l, long);
|
||||
CHECK (ll, long long);
|
||||
|
||||
return fail;
|
||||
}
|
Loading…
Reference in New Issue
Block a user