aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2024-11-01 17:47:48 +0100
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2024-11-09 13:34:34 +0100
commit8b04f60f88079c41b5cb1bf3b7c798703cceea18 (patch)
tree8c0bd6f2fe79a415b22e3b92480e2870050659ad
parentfe908af7dfc95c22284baf544279743a3389d4de (diff)
downloadgcc-8b04f60f88079c41b5cb1bf3b7c798703cceea18.zip
gcc-8b04f60f88079c41b5cb1bf3b7c798703cceea18.tar.gz
gcc-8b04f60f88079c41b5cb1bf3b7c798703cceea18.tar.bz2
arm: Fix ICE on arm_mve.h pragma without MVE types [PR117408]
Starting with r14-435-g00d97bf3b5a, doing `#pragma arm "arm_mve.h" false` or `#pragma arm "arm_mve.h" true` without first doing `#pragma arm "arm_mve_types.h"` causes GCC to ICE. gcc/ChangeLog: PR target/117408 * config/arm/arm-mve-builtins.cc(handle_arm_mve_h): Detect if MVE types is missing and if so, return error. gcc/testsuite/ChangeLog: PR target/117408 * gcc.target/arm/mve/pr117408-1.c: New test. * gcc.target/arm/mve/pr117408-2.c: Likewise. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
-rw-r--r--gcc/config/arm/arm-mve-builtins.cc7
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/pr117408-1.c7
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/pr117408-2.c7
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc
index af19086..ed3d600 100644
--- a/gcc/config/arm/arm-mve-builtins.cc
+++ b/gcc/config/arm/arm-mve-builtins.cc
@@ -535,6 +535,13 @@ handle_arm_mve_h (bool preserve_user_namespace)
return;
}
+ if (!handle_arm_mve_types_p)
+ {
+ error ("this definition requires MVE types, please include %qs",
+ "arm_mve_types.h");
+ return;
+ }
+
/* Define MVE functions. */
function_table = new hash_table<registered_function_hasher> (1023);
function_builder builder;
diff --git a/gcc/testsuite/gcc.target/arm/mve/pr117408-1.c b/gcc/testsuite/gcc.target/arm/mve/pr117408-1.c
new file mode 100644
index 0000000..25eaf67
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/mve/pr117408-1.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+
+/* It doesn't really matter if this produces errors missing types,
+ but it mustn't trigger an ICE. */
+#pragma GCC arm "arm_mve.h" false /* { dg-error "this definition requires MVE types, please include 'arm_mve_types.h'" } */
diff --git a/gcc/testsuite/gcc.target/arm/mve/pr117408-2.c b/gcc/testsuite/gcc.target/arm/mve/pr117408-2.c
new file mode 100644
index 0000000..c3a0af2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/mve/pr117408-2.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+
+/* It doesn't really matter if this produces errors missing types,
+ but it mustn't trigger an ICE. */
+#pragma GCC arm "arm_mve.h" true /* { dg-error "this definition requires MVE types, please include 'arm_mve_types.h'" } */