Commit: M32R: Fix handling of the __model__ attribute

Nick Clifton nickc@redhat.com
Fri Jul 31 16:10:00 GMT 2015


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  <nickc@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 ???.



More information about the Gcc-patches mailing list