sh-linux: Install __sync libfuncs.
authorRichard Henderson <rth@redhat.com>
Sat, 12 Nov 2011 17:17:45 +0000 (09:17 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 12 Nov 2011 17:17:45 +0000 (09:17 -0800)
        * config/sh/linux.h (TARGET_INIT_LIBFUNCS): New.
        * config/sh/sh.c (sh_init_sync_libfuncs): New.

From-SVN: r181322

gcc/ChangeLog
gcc/config/sh/linux.h
gcc/config/sh/sh.c

index 592ea0ad4c39ed1f810fb6b06db072436a2e7287..4a9a5d346d2dcc6a04eeb055d9375039223601a2 100644 (file)
@@ -1,5 +1,8 @@
 2011-11-12  Richard Henderson  <rth@redhat.com>
 
+       * config/sh/linux.h (TARGET_INIT_LIBFUNCS): New.
+       * config/sh/sh.c (sh_init_sync_libfuncs): New.
+
        * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): New.
        * config/pa/pa.h (TARGET_SYNC_LIBCALL): New default.
        * config/pa/pa.c (pa_init_libfuncs): Use init_sync_libfuncs.
index edfd99be652e1dfe81d2cd9d41d505e695cabf01..7a75341cbd5559ab24ad7fb45e1d24f3d0a4bd1f 100644 (file)
@@ -131,3 +131,7 @@ along with GCC; see the file COPYING3.  If not see
 #define SH_DIV_STRATEGY_DEFAULT SH_DIV_CALL2
 #undef SH_DIV_STR_FOR_SIZE
 #define SH_DIV_STR_FOR_SIZE "call2"
+
+/* Install the __sync libcalls.  */
+#undef TARGET_INIT_LIBFUNCS
+#define TARGET_INIT_LIBFUNCS  sh_init_sync_libfuncs
index 03c3c48c0e4ad3d0cf291725db3eeb81226f06ba..2545a63e7244d4654542c0f7eb4a7447caef70b0 100644 (file)
@@ -302,6 +302,8 @@ static void sh_trampoline_init (rtx, tree, rtx);
 static rtx sh_trampoline_adjust_address (rtx);
 static void sh_conditional_register_usage (void);
 static bool sh_legitimate_constant_p (enum machine_mode, rtx);
+
+static void sh_init_sync_libfuncs (void) ATTRIBUTE_UNUSED;
 \f
 static const struct attribute_spec sh_attribute_table[] =
 {
@@ -12499,4 +12501,10 @@ sh_legitimate_constant_p (enum machine_mode mode, rtx x)
 
 enum sh_divide_strategy_e sh_div_strategy = SH_DIV_STRATEGY_DEFAULT;
 
+static void
+sh_init_sync_libfuncs (void)
+{
+  init_sync_libfuncs (UNITS_PER_WORD);
+}
+
 #include "gt-sh.h"