13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 27e6375149f36a71e81e492d9edcc0b8b1f2f7a5fChris Lattner 3e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattnervoid abcdefghi12(void) { 47e6375149f36a71e81e492d9edcc0b8b1f2f7a5fChris Lattner const char (*ss)[12] = &__func__; 5e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattner static int arr[sizeof(__func__)==12 ? 1 : -1]; 67e6375149f36a71e81e492d9edcc0b8b1f2f7a5fChris Lattner} 77e6375149f36a71e81e492d9edcc0b8b1f2f7a5fChris Lattner 8bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattnerchar *X = __func__; // expected-warning {{predefined identifier is only valid}} \ 903028a90c18c484ab477e6535441ec5825a7328aChris Lattner expected-warning {{initializing 'char *' with an expression of type 'const char [1]' discards qualifiers}} 10e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattner 11e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattnervoid a() { 12e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattner __func__[0] = 'a'; // expected-error {{variable is not assignable}} 13e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4Chris Lattner} 14bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattner 15bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattner// rdar://6097892 - GCC permits this insanity. 16bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattnerconst char *b = __func__; // expected-warning {{predefined identifier is only valid}} 17bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattnerconst char *c = __FUNCTION__; // expected-warning {{predefined identifier is only valid}} 18bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattnerconst char *d = __PRETTY_FUNCTION__; // expected-warning {{predefined identifier is only valid}} 19bce5e4f8e89830ed30afa8b102c1ec42ededfc9bChris Lattner 20