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 <tamar.christ...@arm.com> * 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;