diff options
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]; |