mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-18 11:09:37 +08:00
* execute/20000223-1.c: New test.
From-SVN: r32117
This commit is contained in:
parent
b23875c9b5
commit
8bacb3d967
@ -1,3 +1,7 @@
|
||||
2000-02-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* execute/20000223-1.c: New test.
|
||||
|
||||
2000-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* compile/20000127-1.c: New test.
|
||||
|
61
gcc/testsuite/gcc.c-torture/execute/20000223-1.c
Normal file
61
gcc/testsuite/gcc.c-torture/execute/20000223-1.c
Normal file
@ -0,0 +1,61 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Contributed by Nathan Sidwell 23 Feb 2000 <nathan@codesourcery.com> */
|
||||
|
||||
/* __alignof__ should never return a non-power of 2
|
||||
eg, sizeof(long double) might be 12, but that means it must be alignable
|
||||
on a 4 byte boundary. */
|
||||
|
||||
void check (char const *type, int align)
|
||||
{
|
||||
if ((align & -align) != align)
|
||||
{
|
||||
abort ();
|
||||
}
|
||||
}
|
||||
|
||||
#define QUOTE_(s) #s
|
||||
#define QUOTE(s) QUOTE_(s)
|
||||
|
||||
#define check(t) check(QUOTE(t), __alignof__(t))
|
||||
|
||||
// This struct should have an alignment of the lcm of all the types. If one of
|
||||
// the base alignments is not a power of two, then A cannot be power of two
|
||||
// aligned.
|
||||
struct A
|
||||
{
|
||||
char c;
|
||||
signed short ss;
|
||||
unsigned short us;
|
||||
signed int si;
|
||||
unsigned int ui;
|
||||
signed long sl;
|
||||
unsigned long ul;
|
||||
signed long long sll;
|
||||
unsigned long long ull;
|
||||
float f;
|
||||
double d;
|
||||
long double ld;
|
||||
void *dp;
|
||||
void (*fp)();
|
||||
};
|
||||
|
||||
int main ()
|
||||
{
|
||||
check (void);
|
||||
check (char);
|
||||
check (signed short);
|
||||
check (unsigned short);
|
||||
check (signed int);
|
||||
check (unsigned int);
|
||||
check (signed long);
|
||||
check (unsigned long);
|
||||
check (signed long long);
|
||||
check (unsigned long long);
|
||||
check (float);
|
||||
check (double);
|
||||
check (long double);
|
||||
check (void *);
|
||||
check (void (*)());
|
||||
check (struct A);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user