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