diff options
author | Chris Lattner <sabre@nondot.org> | 2008-07-25 20:54:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-07-25 20:54:07 +0000 |
commit | f6e1e309c7759ba2f855eaa3538db1e388c74fb9 (patch) | |
tree | 7f56d18cc166e9475699d7e69f3052a7b800e7b5 /clang/test/Sema/expr-comma.c | |
parent | 04350ebe4a5478e524142210e4793d89d0489779 (diff) | |
download | bcm5719-llvm-f6e1e309c7759ba2f855eaa3538db1e388c74fb9.tar.gz bcm5719-llvm-f6e1e309c7759ba2f855eaa3538db1e388c74fb9.zip |
In c99 mode, comma does do function/array promotion even though
it does not do unary promotions (like short->int).
llvm-svn: 54058
Diffstat (limited to 'clang/test/Sema/expr-comma.c')
-rw-r--r-- | clang/test/Sema/expr-comma.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/clang/test/Sema/expr-comma.c b/clang/test/Sema/expr-comma.c index 7a601e9b3d6..4949ee3a83f 100644 --- a/clang/test/Sema/expr-comma.c +++ b/clang/test/Sema/expr-comma.c @@ -1,11 +1,18 @@ -// RUN: clang %s -fsyntax-only -verify +// RUN: clang %s -fsyntax-only -verify -std=c99 // rdar://6095180 #include <assert.h> struct s { char c[17]; }; -extern struct s foo (void); +extern struct s foo(void); -// sizeof 'c' should be 17, not sizeof(char*). -int X[sizeof(0, (foo().c)) == 17 ? 1 : -1]; +struct s a, b, c; +int A[sizeof((foo().c)) == 17 ? 1 : -1]; +int B[sizeof((a.c)) == 17 ? 1 : -1]; + + +// comma does array/function promotion in c99. +int X[sizeof(0, (foo().c)) == sizeof(char*) ? 1 : -1]; +int Y[sizeof(0, (a,b).c) == sizeof(char*) ? 1 : -1]; +int Z[sizeof(0, (a=b).c) == sizeof(char*) ? 1 : -1]; |