#include <string.h>
#include <stddef.h>
#ifndef MAX_OFFSET
#define MAX_OFFSET (sizeof (long long))
#endif
#ifndef MAX_TEST
#define MAX_TEST (8 * sizeof (long long))
#endif
#ifndef MAX_EXTRA
#define MAX_EXTRA (sizeof (long long))
#endif
#define MAX_LENGTH (MAX_OFFSET + MAX_TEST + MAX_EXTRA + 1)
static union {
char buf[MAX_LENGTH];
long long align_int;
long double align_fp;
} u;
main ()
{
size_t off, len, len2, i;
char *p;
for (off = 0; off < MAX_OFFSET; off++)
for (len = 0; len < MAX_TEST; len++)
{
p = u.buf;
for (i = 0; i < off; i++)
*p++ = '\0';
for (i = 0; i < len; i++)
*p++ = 'a';
*p++ = '\0';
for (i = 0; i < MAX_EXTRA; i++)
*p++ = 'b';
p = u.buf + off;
len2 = strlen (p);
if (len != len2)
abort ();
}
exit (0);
}