This is a follow-up patch to Richard E's
r17-2498-g17f084306c68c4 (#186
on the Forge). As Alice pointed out in her review:
https://gcc.gnu.org/pipermail/gcc-patches/2026-July/724391.html
the original patch missed things like +memtag+tme due to the string
parsing approach. This instead just inspects the parsed feature flags
from aarch64_parse_extension to determine whether to warn in the target
attribute/pragma case.
+tme on the command line is handled as per Richard's original patch (no
change there).
gcc/ChangeLog:
* config/aarch64/aarch64.cc (aarch64_handle_attr_isa_flags):
Warn if +tme is enabled by the target attribute/pragma, relying
on the feature flags from aarch64_parse_extension.
(aarch64_process_target_attr): Drop +tme warning based on custom
string parsing.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/deprecate-tme.c: New test.
if (parse_res == AARCH_PARSE_OK)
{
+ if (!TARGET_TME && (isa_flags & AARCH64_FL_TME))
+ warning (OPT_Wdeprecated,
+ "the architecture extension %<+tme%> is deprecated");
+
aarch64_set_asm_isa_flags (isa_flags);
return true;
}
{
num_attrs++;
- if (strcmp (token, "+tme") == 0 && !TARGET_TME)
- warning (OPT_Wdeprecated,
- "the architecture extension %<+tme%> is deprecated");
-
if (!aarch64_process_one_target_attr (token))
{
/* Check if token is possibly an arch extension without
--- /dev/null
+/* { dg-do compile } */
+
+__attribute__((target("+tme")))
+void a(void) {} /* { dg-warning {'\+tme' is deprecated} } */
+
+__attribute__((target("+dotprod+tme")))
+void b(void) {} /* { dg-warning {'\+tme' is deprecated} } */
+
+#pragma GCC target ("+nothing+tme") /* { dg-warning {'\+tme' is deprecated} } */
+
+void c(void) {}
+
+/* No warning here, we only want to warn when tme transitions from
+ disabled to enabled. This helps keeps noise to a minimum. */
+__attribute__((target("+tme")))
+void d(void) {}