On Fri, 22 Nov 2013, Andrew MacLeod wrote:
> The target hook patch is checked into mainline, revision 205273.

Thanks!

The target patch is there too now; tested with the previous
version of the hook-patch.  I'm confident my autotester will
yell at me if I goofed.

gcc:
        * config/cris/cris.c (cris_atomic_align_for_mode): New function.
        (TARGET_ATOMIC_ALIGN_FOR_MODE): Define.

Index: config/cris/cris.c
===================================================================
--- config/cris/cris.c  (revision 205225)
+++ config/cris/cris.c  (working copy)
@@ -93,6 +93,8 @@ static int cris_reg_overlap_mentioned_p
 static enum machine_mode cris_promote_function_mode (const_tree, enum 
machine_mode,
                                                     int *, const_tree, int);

+static unsigned int cris_atomic_align_for_mode (enum machine_mode);
+
 static void cris_print_base (rtx, FILE *);

 static void cris_print_index (rtx, FILE *);
@@ -227,6 +229,9 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_
 #undef TARGET_PROMOTE_FUNCTION_MODE
 #define TARGET_PROMOTE_FUNCTION_MODE cris_promote_function_mode

+#undef TARGET_ATOMIC_ALIGN_FOR_MODE
+#define TARGET_ATOMIC_ALIGN_FOR_MODE cris_atomic_align_for_mode
+
 #undef TARGET_STRUCT_VALUE_RTX
 #define TARGET_STRUCT_VALUE_RTX cris_struct_value_rtx
 #undef TARGET_SETUP_INCOMING_VARARGS
@@ -4018,6 +4023,14 @@ cris_promote_function_mode (const_tree t
     return mode;
   return CRIS_PROMOTED_MODE (mode, *punsignedp, type);
 }
+
+/* Atomic types require alignment to be at least their "natural" size.  */
+
+static unsigned int
+cris_atomic_align_for_mode (enum machine_mode mode)
+{
+  return GET_MODE_BITSIZE (mode);
+}

 /* Let's assume all functions return in r[CRIS_FIRST_ARG_REG] for the
    time being.  */

brgds, H-P

Reply via email to