Hi Guys, I am checking in the patch below to fix the M32R port's handling of its __model__ attribute. This attribute takes a parameter identifying the memory model to use, but gcc was not being told to expect this identifier.
Cheers Nick gcc/ChangeLog 2015-07-31 Nick Clifton <ni...@redhat.com> * config/m32r/m32r.c (m32r_attribute_identifier): New function. Returns true for __model__. (TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Define. Index: gcc/config/m32r/m32r.c =================================================================== --- gcc/config/m32r/m32r.c (revision 226444) +++ gcc/config/m32r/m32r.c (working copy) @@ -113,6 +113,7 @@ static void m32r_conditional_register_usage (void); static void m32r_trampoline_init (rtx, tree, rtx); static bool m32r_legitimate_constant_p (machine_mode, rtx); +static bool m32r_attribute_identifier (const_tree); /* M32R specific attributes. */ @@ -129,6 +130,8 @@ /* Initialize the GCC target structure. */ #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE m32r_attribute_table +#undef TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P +#define TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P m32r_attribute_identifier #undef TARGET_LEGITIMATE_ADDRESS_P #define TARGET_LEGITIMATE_ADDRESS_P m32r_legitimate_address_p @@ -404,6 +407,13 @@ return NULL_TREE; } + +static bool +m32r_attribute_identifier (const_tree name) +{ + return strcmp (IDENTIFIER_POINTER (name), "model") == 0 + || strcmp (IDENTIFIER_POINTER (name), "__model__") == 0; +} /* Encode section information of DECL, which is either a VAR_DECL, FUNCTION_DECL, STRING_CST, CONSTRUCTOR, or ???.