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