[PATCH v1 1/1] aarch64: delete vaddd_s64 and vaddd_u64 from arm_neon.h [PR126652]
Karl Meakin <[email protected]> Wed, 5 Aug 2026 16:52:12 +0000
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
Now that `vaddd_s64` and `vaddd_u64` are implemented in the compiler,
the definitions in arm_neon.h are unnecessary. Fix by deleting them.
This fixes PR126652: a compiler error was triggered when `#include
<arm_neon.h>` is wrapped in an `extern "C" {}` block in C++-mode.
PR target/126652
gcc/ChangeLog:
* config/aarch64/arm_neon.h (vaddd_s64, vaddd_u64): Delete
function definitions.
gcc/testsuite/ChangeLog:
* g++.target/aarch64/pr126652.C: New test.
---
gcc/config/aarch64/arm_neon.h | 16 ----------------
gcc/testsuite/g++.target/aarch64/pr126652.C | 11 +++++++++++
2 files changed, 11 insertions(+), 16 deletions(-)
create mode 100644 gcc/testsuite/g++.target/aarch64/pr126652.C
diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
index 101a6e52106..873a1195d3e 100644
--- a/gcc/config/aarch64/arm_neon.h
+++ b/gcc/config/aarch64/arm_neon.h
@@ -5279,22 +5279,6 @@ vabsd_s64 (int64_t __a)
return __a < 0 ? - (uint64_t) __a : __a;
}
-/* vadd */
-
-__extension__ extern __inline int64_t
-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
-vaddd_s64 (int64_t __a, int64_t __b)
-{
- return __a + __b;
-}
-
-__extension__ extern __inline uint64_t
-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
-vaddd_u64 (uint64_t __a, uint64_t __b)
-{
- return __a + __b;
-}
-
/* vaddv */
__extension__ extern __inline int8_t
diff --git a/gcc/testsuite/g++.target/aarch64/pr126652.C b/gcc/testsuite/g++.target/aarch64/pr126652.C
new file mode 100644
index 00000000000..a6916fcdcc8
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/pr126652.C
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#include <arm_neon.h>
+
+#if defined(__cplusplus)
+}
+#endif
--
2.51.0