// { dg-do run  }
// GROUPS passed bit-fields
// bitfield file
// Message-Id: <92Oct29.191913est.62@jarvis.csri.toronto.edu>
// From: mdivax1!robinson@ai.mit.edu (Jim Robinson)
// Subject: gcc 2.2.2 C++ bug in handling :0 bit fields
// Date:   Thu, 29 Oct 1992 19:18:28 -0500
//
// Also applies to:
// bitfield file
// From: Jaimie Wilson/MSL <Jaimie_Wilson@msl.isis.org>
// Date:   Fri, 28 Jan 1994 06:11:43 -0500
// Subject: GCC bug report
//
// This test is only meant for targets where EMPTY_FIELD_BOUNDARY is
// defined to no larger than the size of an unsigned int, or where
// PCC_BITFIELD_TYPE_MATTERS is defined.  Add skips below for targets that
// do not have that property.
// { dg-skip-if "" { mmix-knuth-mmixware } { "*" } { "" } }


#include <stdio.h>
#include <stddef.h>

struct foo {
        char a;
        char b;
        unsigned int : 0;       /* force word alignment */
        char c;
};

int
main(int argc, char **argv)
{
        struct foo bar;

	if (offsetof (struct foo, c) > sizeof (unsigned int))
		{ printf ("FAIL\n"); return 1; }
	else
		printf ("PASS\n");
	return 0;
}

