From 4759c16beec2a7a4ed56608adcf932f9a6acbdc7 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Sun, 2 Jan 2022 16:40:48 +0000 Subject: [PATCH] Use optab_libfunc to access sync_lock_test_and_set libfunc on hppa-linux. 2022-01-02 John David Anglin gcc/ChangeLog: * config/pa/pa.md (atomic_storeq): Use optab_libfunc to access sync_lock_test_and_set libfunc. Call convert_memory_address to convert memory address to Pmode. (atomic_storehi, atomic_storesi, atomic_storedi): Likewise. --- gcc/config/pa/pa.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index af5449a..31e3b1b 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -10366,10 +10366,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" { if (TARGET_SYNC_LIBCALL) { - rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_1"); + rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, QImode); + rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0)); - emit_library_call (libfunc, LCT_NORMAL, VOIDmode, - XEXP (operands[0], 0), Pmode, + emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode, operands[1], QImode); DONE; } @@ -10386,10 +10386,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" { if (TARGET_SYNC_LIBCALL) { - rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_2"); + rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, HImode); + rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0)); - emit_library_call (libfunc, LCT_NORMAL, VOIDmode, - XEXP (operands[0], 0), Pmode, + emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode, operands[1], HImode); DONE; } @@ -10406,10 +10406,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" { if (TARGET_SYNC_LIBCALL) { - rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_4"); + rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, SImode); + rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0)); - emit_library_call (libfunc, LCT_NORMAL, VOIDmode, - XEXP (operands[0], 0), Pmode, + emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode, operands[1], SImode); DONE; } @@ -10459,10 +10459,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" if (TARGET_SYNC_LIBCALL) { - rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_8"); + rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, DImode); + rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0)); - emit_library_call (libfunc, LCT_NORMAL, VOIDmode, - XEXP (operands[0], 0), Pmode, + emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode, operands[1], DImode); DONE; } -- 2.7.4