Hi All,
When mangling the builtin names and type signatures we create a buffer
to hold SIMD_MAX_BUILTIN_ARGS arguments, but don't account for the null
terminator for the string. Which means when you actually do use up to
SIMD_MAX_BUILTIN_ARGS arguments you'll end up with garbage at the end of
your intrinsics name.
I now allocate one extra char for the type signature for the null terminator.
Committed under the GCC obvious rule as r251558.
Tested on aarch64-none-elf
Thanks,
Tamar
gcc/
2017-08-31 Tamar Christina <[email protected]>
* config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
Resize type_signature.
--
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index a1b598c3da29ca791c261ca8a6f918573a818974..2670f3b550fc7c56cb11c5bfd5517cdeb9091d35 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -759,7 +759,7 @@ aarch64_init_simd_builtins (void)
for (i = 0; i < ARRAY_SIZE (aarch64_simd_builtin_data); i++, fcode++)
{
bool print_type_signature_p = false;
- char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 };
+ char type_signature[SIMD_MAX_BUILTIN_ARGS + 1] = { 0 };
aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i];
char namebuf[60];
tree ftype = NULL;