Index: gcc/c-family/c-common.c =================================================================== --- gcc/c-family/c-common.c (revision 196316) +++ gcc/c-family/c-common.c (working copy) @@ -550,6 +550,18 @@ const struct c_common_resword c_common_r { "volatile", RID_VOLATILE, 0 }, { "wchar_t", RID_WCHAR, D_CXXONLY }, { "while", RID_WHILE, 0 }, + + /* Concepts-related keywords */ + { "assume", RID_ASSUME, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "axiom", RID_AXIOM, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "concept", RID_CONCEPT, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "forall", RID_FORALL, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "requires", RID_REQUIRES, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "__declval", RID_DECLVAL, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "__is_same", RID_IS_SAME, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "__is_valid_expr", RID_IS_VALID_EXPR, D_CXXONLY | D_CXX0X | D_CXXWARN }, + { "__is_valid_type", RID_IS_VALID_TYPE, D_CXXONLY | D_CXX0X | D_CXXWARN }, + /* These Objective-C keywords are recognized only immediately after an '@'. */ { "compatibility_alias", RID_AT_ALIAS, D_OBJC }, Index: gcc/c-family/c-common.h =================================================================== --- gcc/c-family/c-common.h (revision 196316) +++ gcc/c-family/c-common.h (working copy) @@ -148,6 +148,14 @@ enum rid /* C++11 */ RID_CONSTEXPR, RID_DECLTYPE, RID_NOEXCEPT, RID_NULLPTR, RID_STATIC_ASSERT, + /* C++ concepts */ + RID_ASSUME, RID_AXIOM, RID_CONCEPT, + RID_FORALL, RID_REQUIRES, + + /* C++ concepts (intrinsics) */ + RID_DECLVAL, RID_IS_SAME, + RID_IS_VALID_EXPR, RID_IS_VALID_TYPE, + /* Objective-C ("AT" reserved words - they are only keywords when they follow '@') */ RID_AT_ENCODE, RID_AT_END,