From ea4c780da19e11edc9d13a09b51a6eb6b7446e11 Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Wed, 8 Apr 2009 17:05:15 +0000 Subject: Sema::CheckConditionalOperands(): Soften pointer/integer mismatch from error->warning. Fixes [sema] gcc incompatibility; error on incompatible operand types in ?:. llvm-svn: 68617 --- clang/test/Sema/conditional-expr.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'clang/test/Sema/conditional-expr.c') diff --git a/clang/test/Sema/conditional-expr.c b/clang/test/Sema/conditional-expr.c index c068113..1f0a9de 100644 --- a/clang/test/Sema/conditional-expr.c +++ b/clang/test/Sema/conditional-expr.c @@ -40,3 +40,12 @@ int Postgresql() { char x; return ((((&x) != ((void *) 0)) ? (*(&x) = ((char) 1)) : (void) ((void *) 0)), (unsigned long) ((void *) 0)); // expected-warning {{C99 forbids conditional expressions with only one void side}} } + +#define nil ((void*) 0) + +extern int f1(void); + +int f0(int a) { + // GCC considers this a warning. + return a ? f1() : nil; // expected-warning {{pointer/integer type mismatch in conditional expression ('int' and 'void *')}} expected-warning {{incompatible pointer to integer conversion returning 'void *', expected 'int'}} +} -- cgit v1.1