diff options
author | Ed Schouten <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
---|---|---|
committer | Ed Schouten <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
commit | 5362a71c02e7d448a8ce98cf00c47e353fba5d04 (patch) | |
tree | 8ddfe382e1c6d590dc240e76f7cd45cea5c78e24 /test/Sema | |
parent | 4ebdf5c4f587daef4e0be499802eac3a7a49bf2f (diff) |
Notes
Diffstat (limited to 'test/Sema')
-rw-r--r-- | test/Sema/compare.c | 14 | ||||
-rw-r--r-- | test/Sema/ext_vector_casts.c | 22 | ||||
-rw-r--r-- | test/Sema/format-attr-pr4470.c | 11 |
3 files changed, 47 insertions, 0 deletions
diff --git a/test/Sema/compare.c b/test/Sema/compare.c index 4b44bf5b96a07..51f77317385ca 100644 --- a/test/Sema/compare.c +++ b/test/Sema/compare.c @@ -15,3 +15,17 @@ int arrays(char (*a)[5], char(*b)[10], char(*c)[5]) { int d = (a == c); return a == b; // expected-warning {{comparison of distinct pointer types}} } + +int pointers(int *a) +{ + return a > 0; // expected-warning {{ordered comparison between pointer and integer}} + return a > (void *)0; // expected-warning {{comparison of distinct pointer types}} +} + +int function_pointers(int (*a)(int), int (*b)(int)) +{ + return a > b; // expected-warning {{ordered comparison of function pointers}} + return function_pointers > function_pointers; // expected-warning {{ordered comparison of function pointers}} + return a == (void *) 0; + return a == (void *) 1; // expected-warning {{comparison of distinct pointer types}} +} diff --git a/test/Sema/ext_vector_casts.c b/test/Sema/ext_vector_casts.c index 8aa762ebcf2ae..dbcd1c9b3ac05 100644 --- a/test/Sema/ext_vector_casts.c +++ b/test/Sema/ext_vector_casts.c @@ -2,6 +2,7 @@ typedef __attribute__(( ext_vector_type(2) )) float float2; typedef __attribute__(( ext_vector_type(4) )) int int4; +typedef __attribute__(( ext_vector_type(8) )) short short8; typedef __attribute__(( ext_vector_type(4) )) float float4; typedef float t3 __attribute__ ((vector_size (16))); @@ -9,8 +10,12 @@ static void test() { float2 vec2; float4 vec4, vec4_2; int4 ivec4; + short8 ish8; t3 vec4_3; + int *ptr; + int i; + vec4 = 5.0f; vec4 = (float4)5.0f; vec4 = (float4)5; vec4 = (float4)vec4_3; @@ -19,5 +24,22 @@ static void test() { ivec4 = (int4)5; ivec4 = (int4)vec4_3; + i = (int)ivec4; // expected-error {{invalid conversion between vector type 'int4' and integer type 'int' of different size}} + i = ivec4; // expected-error {{incompatible type assigning 'int4', expected 'int'}} + + ivec4 = (int4)ptr; // expected-error {{invalid conversion between vector type 'int4' and scalar type 'int *'}} + vec4 = (float4)vec2; // expected-error {{invalid conversion between ext-vector type 'float4' and 'float2'}} + + ish8 += 5; // expected-error {{can't convert between vector values of different size ('short8' and 'int')}} + ish8 += (short)5; + ivec4 *= 5; + vec4 /= 5.2f; + vec4 %= 4; // expected-error {{invalid operands to binary expression ('float4' and 'int')}} + ivec4 %= 4; + ivec4 += vec4; // expected-error {{can't convert between vector values of different size ('float4' and 'int4')}} + ivec4 += (int4)vec4; + ivec4 -= ivec4; + ivec4 |= ivec4; + ivec4 += ptr; // expected-error {{can't convert between vector values of different size ('int4' and 'int *')}} } diff --git a/test/Sema/format-attr-pr4470.c b/test/Sema/format-attr-pr4470.c new file mode 100644 index 0000000000000..cba3adf1d6de4 --- /dev/null +++ b/test/Sema/format-attr-pr4470.c @@ -0,0 +1,11 @@ +// RUN: clang-cc -fsyntax-only -verify -Wformat=2 %s + +#include <stdio.h> + +const char *foo(const char *format) __attribute__((format_arg(1))); + +void __attribute__((format(printf, 1, 0))) +foo2(const char *fmt, va_list va) +{ + vprintf(foo(fmt), va); +} |