This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix poly types after PR tree-optimization/71625 strlen optimization
Hi Szabolcs,
On 17/08/18 18:18, Szabolcs Nagy wrote:
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.nagy@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;
Ok.
Thanks,
Kyrill