On 15/08/18 16:51, Martin Sebor wrote:
On 08/15/2018 04:28 AM, James Greenhalgh wrote:
On Tue, Aug 14, 2018 at 09:34:08PM -0500, Martin Sebor wrote:
On 08/14/2018 09:24 AM, Martin Sebor wrote:
On 08/14/2018 09:08 AM, Martin Sebor wrote:
--- gcc/config/aarch64/aarch64-builtins.c (revision 263537)
+++ gcc/config/aarch64/aarch64-builtins.c (working copy)
@@ -643,6 +643,7 @@ aarch64_init_simd_builtin_types (void)
/* Poly types are a world of their own. */
aarch64_simd_types[Poly8_t].eltype = aarch64_simd_types[Poly8_t].itype =
build_distinct_type_copy (unsigned_intQI_type_node);
+ TYPE_STRING_FLAG (aarch64_simd_types[Poly8_t].eltype) = false;
aarch64_simd_types[Poly16_t].eltype =
aarch64_simd_types[Poly16_t].itype =
build_distinct_type_copy (unsigned_intHI_type_node);
aarch64_simd_types[Poly64_t].eltype =
aarch64_simd_types[Poly64_t].itype =
This fix seems correct to me, the poly types are not strings. Looking at
other uses of TYPE_STRING_FLAG this change doesn't seem like it would have
impact on parsing or code generation.
OK for trunk.
I committed this in r263561.
happens on arm too.
Same as r263561, but for arm: avoid compilation errors caused by poly
initializers getting treated as string literals.
Tested on arm-none-linux-gnueabihf.
gcc/ChangeLog:
2018-08-17 Szabolcs Nagy <szabolcs.n...@arm.com>
* config/arm/arm-builtins.c (arm_init_simd_builtin_types): Clear
polyNxK_t element's TYPE_STRING_FLAG.
diff --git a/gcc/config/arm/arm-builtins.c b/gcc/config/arm/arm-builtins.c
index 183a7b907f6..563ca51dcd0 100644
--- a/gcc/config/arm/arm-builtins.c
+++ b/gcc/config/arm/arm-builtins.c
@@ -927,6 +927,11 @@ arm_init_simd_builtin_types (void)
(*lang_hooks.types.register_builtin_type) (arm_simd_polyTI_type_node,
"__builtin_neon_poly128");
+ /* Prevent front-ends from transforming poly vectors into string
+ literals. */
+ TYPE_STRING_FLAG (arm_simd_polyQI_type_node) = false;
+ TYPE_STRING_FLAG (arm_simd_polyHI_type_node) = false;
+
/* Init all the element types built by the front-end. */
arm_simd_types[Int8x8_t].eltype = intQI_type_node;
arm_simd_types[Int8x16_t].eltype = intQI_type_node;