The `_shape` objects were declared in `aarch64-neon-builtins-shapes.h`
as pointer-to-const, but were defined in
`aarch64-neon-builtins-shapes.cc` as pointer-to-non-const. This
triggered an `-Wodr` warning when building with LTO, which broke
bootstrap when compiling with `-Werror`. Fix by const-qualifying the
pointer at the definition site.

Fixes PR126744.

gcc/ChangeLog:

        PR target/126744
        * config/aarch64/aarch64-neon-builtins-shapes.cc
        (DEF_NEON_FUNCTION): Include `aarch64-neon-builtins-shapes.h`
        and const-qualify the pointer types of the `_shape` objects.
---
 gcc/config/aarch64/aarch64-neon-builtins-shapes.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc 
b/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc
index c50fb4d4f8c..d4aa352f13e 100644
--- a/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc
+++ b/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc
@@ -32,6 +32,7 @@
 #include "insn-codes.h"
 #include "optabs.h"
 #include "aarch64-acle-builtins.h"
+#include "aarch64-neon-builtins-shapes.h"
 #include "aarch64-sve-builtins-shapes.h"
 #include "aarch64-builtins.h"

@@ -129,7 +130,7 @@ namespace aarch64_acle {
   namespace shapes {
 #define DEF_NEON_FUNCTION(NAME, TYPES, SHAPE_ARGS)                     \
     static constexpr const neon_shape OBJ_NAME (NAME, TYPES) SHAPE_ARGS;\
-    const aarch64_acle::function_shape *SHAPE_NAME (NAME, TYPES)       \
+    const aarch64_acle::function_shape *const SHAPE_NAME (NAME, TYPES) \
       = &OBJ_NAME (NAME, TYPES);
 #include "aarch64-neon-builtins.def"
   }
--
2.51.0

Reply via email to