aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-11-26 16:20:48 -0800
committerRichard Henderson <rth@gcc.gnu.org>2011-11-26 16:20:48 -0800
commit380af8096daaabbdfc0d112f02f62814a670e524 (patch)
treeb9bcf43f9ccd57fb0278e23b03bc347790776ba3 /gcc
parent14bb3de00f282273504fb87e82f6edc4feaca4bb (diff)
downloadgcc-380af8096daaabbdfc0d112f02f62814a670e524.zip
gcc-380af8096daaabbdfc0d112f02f62814a670e524.tar.gz
gcc-380af8096daaabbdfc0d112f02f62814a670e524.tar.bz2
arm: Install __sync libfuncs for Linux.
* config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs for Linux. From-SVN: r181755
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c16f1d8..5a6b5d3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2011-11-26 Richard Henderson <rth@redhat.com>
+ * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs
+ for Linux.
+
+2011-11-26 Richard Henderson <rth@redhat.com>
+
* optabs.c (expand_atomic_fetch_op): Always return result.
* optabs.c (init_sync_libfuncs_1): Include max in iteration.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index e3b0b88..ee26c51 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1096,6 +1096,10 @@ arm_set_fixed_conv_libfunc (convert_optab optable, enum machine_mode to,
static void
arm_init_libfuncs (void)
{
+ /* For Linux, we have access to kernel support for atomic operations. */
+ if (arm_abi == ARM_ABI_AAPCS_LINUX)
+ init_sync_libfuncs (2 * UNITS_PER_WORD);
+
/* There are no special library functions unless we are using the
ARM BPABI. */
if (!TARGET_BPABI)