AArch64: Add UNSPECV_PATCHABLE_AREA [PR98776]
authorSebastian Pop <spop@amazon.com>
Wed, 30 Nov 2022 19:45:24 +0000 (19:45 +0000)
committerSebastian Pop <spop@amazon.com>
Thu, 8 Dec 2022 17:11:11 +0000 (17:11 +0000)
commit09c91caeb84e7c3609a12a53b57e5219a1dd2b15
tree2e99afa890ace31b1981881b069caae575230c24
parent955093369ed41e7ad7d9e4fadc2948375a6cb103
AArch64: Add UNSPECV_PATCHABLE_AREA [PR98776]

Currently patchable area is at the wrong place on AArch64.  It is placed
immediately after function label, before .cfi_startproc.  This patch
adds UNSPECV_PATCHABLE_AREA for pseudo patchable area instruction and
modifies aarch64_print_patchable_function_entry to avoid placing
patchable area before .cfi_startproc.

gcc/
PR target/98776
* config/aarch64/aarch64-protos.h (aarch64_output_patchable_area):
Declared.
* config/aarch64/aarch64.cc (aarch64_print_patchable_function_entry):
Emit an UNSPECV_PATCHABLE_AREA pseudo instruction.
(aarch64_output_patchable_area): New.
* config/aarch64/aarch64.md (UNSPECV_PATCHABLE_AREA): New.
(patchable_area): Define.

gcc/testsuite/
PR target/98776
* gcc.target/aarch64/pr98776.c: New.
* gcc.target/aarch64/pr92424-2.c: Adjust pattern.
* gcc.target/aarch64/pr92424-3.c: Adjust pattern.
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.cc
gcc/config/aarch64/aarch64.md
gcc/testsuite/gcc.target/aarch64/pr92424-2.c
gcc/testsuite/gcc.target/aarch64/pr92424-3.c
gcc/testsuite/gcc.target/aarch64/pr98776.c [new file with mode: 0644]