diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2000-02-23 18:14:28 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2000-02-23 18:14:28 +0000 |
commit | 8bacb3d9672f52aff9464d9d534c30818e3da8fc (patch) | |
tree | 66de3f6ec1364e7e89085bc6b86ac66e24b37bff | |
parent | b23875c9b544eb01e0e2d39118c6f4f0466bb1db (diff) | |
download | gcc-8bacb3d9672f52aff9464d9d534c30818e3da8fc.zip gcc-8bacb3d9672f52aff9464d9d534c30818e3da8fc.tar.gz gcc-8bacb3d9672f52aff9464d9d534c30818e3da8fc.tar.bz2 |
* execute/20000223-1.c: New test.
From-SVN: r32117
-rw-r--r-- | gcc/testsuite/gcc.c-torture/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20000223-1.c | 61 |
2 files changed, 65 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog index 86fac2e..1c0a9d7 100644 --- a/gcc/testsuite/gcc.c-torture/ChangeLog +++ b/gcc/testsuite/gcc.c-torture/ChangeLog @@ -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. diff --git a/gcc/testsuite/gcc.c-torture/execute/20000223-1.c b/gcc/testsuite/gcc.c-torture/execute/20000223-1.c new file mode 100644 index 0000000..db6180b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20000223-1.c @@ -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; +} |