exprs.c revision 31e21e05623ce9d11b1a893fecb87ad349df6c7d
135080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner// RUN: clang %s -verify -pedantic -fsyntax-only 235080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner 335080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner// PR1966 435080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner_Complex double test1() { 535080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner return __extension__ 1.0if; 635080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner} 735080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner 835080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner_Complex double test2() { 935080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner return 1.0if; // expected-warning {{imaginary constants are an extension}} 1035080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner} 1135080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner 12baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner// rdar://6097308 13baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattnervoid test3() { 14baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner int x; 15baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner (__extension__ x) = 10; 16baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner} 17baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner 182c15647dce6de66f673cc64236913732d6289317Chris Lattner// rdar://6162726 192c15647dce6de66f673cc64236913732d6289317Chris Lattnervoid test4() { 202c15647dce6de66f673cc64236913732d6289317Chris Lattner static int var; 212c15647dce6de66f673cc64236913732d6289317Chris Lattner var =+ 5; // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}} 222c15647dce6de66f673cc64236913732d6289317Chris Lattner var =- 5; // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}} 232c15647dce6de66f673cc64236913732d6289317Chris Lattner var = +5; 242c15647dce6de66f673cc64236913732d6289317Chris Lattner var = -5; 252c15647dce6de66f673cc64236913732d6289317Chris Lattner} 262c15647dce6de66f673cc64236913732d6289317Chris Lattner 27ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner// rdar://6319320 28ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattnervoid test5(int *X, float *P) { 29ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner (float*)X = P; // expected-error {{assignment to cast is illegal, lvalue casts are not supported}} 30ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner} 31ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner 32b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattnervoid test6() { 33b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner int X; 34b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner X(); // expected-error {{called object type 'int' is not a function or function pointer}} 35b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner} 367ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner 377ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattnervoid test7(int *P, _Complex float Gamma) { 387ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner P = (P-42) + Gamma*4; // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}} 397ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner} 407ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner 41670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner 42670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner// rdar://6095061 43670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattnerint test8(void) { 44670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner int i; 454209a3909d827efb7648a9355f2976ca656da704Chris Lattner __builtin_choose_expr (0, 42, i) = 10; // expected-warning {{extension used}} 46670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner return i; 47670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner} 4831e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner 4931e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner 5031e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner// PR3386 5131e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattnerstruct f { int x : 4; float y[]; }; 5231e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattnerint test9(struct f *P) { 5331e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner return __alignof(P->x) + // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}} 5431e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner __alignof(P->y); // ok. expected-warning {{extension used}} 5531e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner} 5631e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner 57