diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2011-09-29 18:04:28 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2011-09-29 18:04:28 +0000 |
| commit | 2f3cf4b15825d52b1f799c3a94402f85924b1df6 (patch) | |
| tree | 211b7a26f91487e3225b0542c7286d8a3d4fcb0c /clang/test/Sema | |
| parent | 4ce4de8eadcfb884671c0ee1cedfb0901e185cf3 (diff) | |
| download | bcm5719-llvm-2f3cf4b15825d52b1f799c3a94402f85924b1df6.tar.gz bcm5719-llvm-2f3cf4b15825d52b1f799c3a94402f85924b1df6.zip | |
Add support for alignment-specifiers in C1X and C++11, remove
support for the C++0x draft [[align]] attribute and add the C1X
standard header file stdalign.h
llvm-svn: 140796
Diffstat (limited to 'clang/test/Sema')
| -rw-r--r-- | clang/test/Sema/alignas.c | 19 | ||||
| -rw-r--r-- | clang/test/Sema/warn-cast-align.c | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/clang/test/Sema/alignas.c b/clang/test/Sema/alignas.c new file mode 100644 index 00000000000..5832393e3b6 --- /dev/null +++ b/clang/test/Sema/alignas.c @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -std=c1x %s + +_Alignas(3) int align_illegal; //expected-error {{requested alignment is not a power of 2}} +_Alignas(int) char align_big; +_Alignas(1) int align_small; // FIXME: this should be rejected +_Alignas(1) unsigned _Alignas(8) int _Alignas(1) align_multiple; + +struct align_member { + _Alignas(8) int member; +}; + +typedef _Alignas(8) char align_typedef; // FIXME: this should be rejected + +_Static_assert(__alignof(align_big) == __alignof(int), "k's alignment is wrong"); +_Static_assert(__alignof(align_small) == 1, "j's alignment is wrong"); +_Static_assert(__alignof(align_multiple) == 8, "l's alignment is wrong"); +_Static_assert(__alignof(struct align_member) == 8, "quuux's alignment is wrong"); +_Static_assert(sizeof(struct align_member) == 8, "quuux's size is wrong"); +_Static_assert(__alignof(align_typedef) == 8, "typedef's alignment is wrong"); diff --git a/clang/test/Sema/warn-cast-align.c b/clang/test/Sema/warn-cast-align.c index 11e3c416364..93352c253a2 100644 --- a/clang/test/Sema/warn-cast-align.c +++ b/clang/test/Sema/warn-cast-align.c @@ -28,7 +28,7 @@ void test1(void *P) { } // Aligned struct. -__attribute__((align(16))) struct A { +__attribute__((aligned(16))) struct A { char buffer[16]; }; void test2(char *P) { |

