* 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>
|
2000-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* compile/20000127-1.c: New test.
|
* 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