]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Fix memtag intrinsic availability
authorAndrew Carlotti <andrew.carlotti@arm.com>
Tue, 18 Jul 2023 19:09:38 +0000 (20:09 +0100)
committerAndrew Carlotti <andrew.carlotti@arm.com>
Mon, 19 Aug 2024 14:49:48 +0000 (15:49 +0100)
commit4e1b617b35631df4dd6089d4044aa19d0c1adea7
tree25dfa39eefa437d8b4343d7e574fbd20a6d9b212
parent32afbb604b4958e78428006b10b3ca5e9ccd49f5
aarch64: Fix memtag intrinsic availability

The availability of memtag intrinsics and data types were determined
solely by the globally specified architecture features, which did not
reflect any changes specified in target pragmas or attributes.

This patch removes the initialisation-time guards for the intrinsics,
and replaces them with checks at use time. It also removes the macro
indirection from the header file - this simplifies the header, and
allows the missing extension error reporting to find the user-facing
intrinsic names.

gcc/ChangeLog:

PR target/112108
* config/aarch64/aarch64-builtins.cc (aarch64_init_memtag_builtins):
Define intrinsic names directly.
(aarch64_general_init_builtins): Move memtag intialisation...
(handle_arm_acle_h): ...to here, and remove feature check.
(aarch64_general_check_builtin_call): Check memtag intrinsics.
* config/aarch64/arm_acle.h (__arm_mte_create_random_tag)
(__arm_mte_exclude_tag, __arm_mte_ptrdiff)
(__arm_mte_increment_tag, __arm_mte_set_tag, __arm_mte_get_tag):
Remove.

gcc/testsuite/ChangeLog:

PR target/112108
* gcc.target/aarch64/acle/memtag_guard-1.c: New test.
* gcc.target/aarch64/acle/memtag_guard-2.c: New test.
* gcc.target/aarch64/acle/memtag_guard-3.c: New test.
* gcc.target/aarch64/acle/memtag_guard-4.c: New test.
gcc/config/aarch64/aarch64-builtins.cc
gcc/config/aarch64/arm_acle.h
gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-4.c [new file with mode: 0644]