typedef-retain.c revision d4eea8362605807327735727a9098abe1eb23b19
1857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs// RUN: %clang_cc1 -fsyntax-only -verify %s -fno-lax-vector-conversions
2857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs
3857a3294a959015bf893241199f7fd7f7882a6abBen Skeggstypedef float float4 __attribute__((vector_size(16)));
4857a3294a959015bf893241199f7fd7f7882a6abBen Skeggstypedef int int4 __attribute__((vector_size(16)));
5857a3294a959015bf893241199f7fd7f7882a6abBen Skeggstypedef int4* int4p;
6857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs
7857a3294a959015bf893241199f7fd7f7882a6abBen Skeggsvoid test1(float4 a, int4 *result, int i) {
8857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs    result[i] = a; // expected-error {{assigning to 'int4' from incompatible type 'float4'}}
9857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs}
10857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs
11857a3294a959015bf893241199f7fd7f7882a6abBen Skeggsvoid test2(float4 a, int4p result, int i) {
12857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs    result[i] = a; // expected-error {{assigning to 'int4' from incompatible type 'float4'}}
13857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs}
14857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs
15857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs// PR2039
16857a3294a959015bf893241199f7fd7f7882a6abBen Skeggstypedef int a[5];
17857a3294a959015bf893241199f7fd7f7882a6abBen Skeggsvoid test3() {
18857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs  typedef const a b;
19857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs  b r;
20857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs  r[0]=10;  // expected-error {{read-only variable is not assignable}}
21857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs}
22857a3294a959015bf893241199f7fd7f7882a6abBen Skeggs
23f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggsint test4(const a y) {
24f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs  y[0] = 10; // expected-error {{read-only variable is not assignable}}
25f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs}
26f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs
27f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs// PR2189
28f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggsint test5() {
29fda01b584715c05696a0e6768fda669ef1eb5f3bBen Skeggs  const int s[5]; int t[5];
30fda01b584715c05696a0e6768fda669ef1eb5f3bBen Skeggs  return &s == &t;   // expected-warning {{comparison of distinct pointer types}}
31f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs}
32f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs
33f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggsint test6() {
34f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs  const a s;
35b01d0077af9d93c582e5f53ebd358ac8148b22dfBen Skeggs  a t;
36f722fd937db2f3cacf1947d538c66528fd16eb89Ben Skeggs  return &s == &t;   // expected-warning {{comparison of distinct pointer types}}
379a37a56c8ab8c64bdadb1e1e807f885d6a5e3121Ben Skeggs}
3821e18e2b74d71c93af06ef4c603ca371c4614237Ben Skeggs
3921e18e2b74d71c93af06ef4c603ca371c4614237Ben Skeggs