OSDN Git Service

sh-linux: Install __sync libfuncs.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 Nov 2011 17:17:45 +0000 (17:17 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 Nov 2011 17:17:45 +0000 (17:17 +0000)
        * config/sh/linux.h (TARGET_INIT_LIBFUNCS): New.
        * config/sh/sh.c (sh_init_sync_libfuncs): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181322 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 592ea0a..4a9a5d3 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 edfd99b..7a75341 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 03c3c48..2545a63 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"