aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJohn David Anglin <danglin@gcc.gnu.org>2022-01-02 16:40:48 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2022-01-02 16:40:48 +0000
commit4759c16beec2a7a4ed56608adcf932f9a6acbdc7 (patch)
tree17b6f7d208bf037933b017e1c4a74cf5c913418c /gcc/config
parent62eb5308fe6c46f7eded3c9e06c53491515a6e63 (diff)
downloadgcc-4759c16beec2a7a4ed56608adcf932f9a6acbdc7.zip
gcc-4759c16beec2a7a4ed56608adcf932f9a6acbdc7.tar.gz
gcc-4759c16beec2a7a4ed56608adcf932f9a6acbdc7.tar.bz2
Use optab_libfunc to access sync_lock_test_and_set libfunc on hppa-linux.
2022-01-02 John David Anglin <danglin@gcc.gnu.org> 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.
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/pa/pa.md24
1 files 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;
}