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