diff options
author | Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> | 2024-11-01 17:47:48 +0100 |
---|---|---|
committer | Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> | 2024-11-09 13:34:34 +0100 |
commit | 8b04f60f88079c41b5cb1bf3b7c798703cceea18 (patch) | |
tree | 8c0bd6f2fe79a415b22e3b92480e2870050659ad /gcc | |
parent | fe908af7dfc95c22284baf544279743a3389d4de (diff) | |
download | gcc-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>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/arm/arm-mve-builtins.cc | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/mve/pr117408-1.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/mve/pr117408-2.c | 7 |
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'" } */ |