[PATCH] Do not set structural equality on polynomial types

gcc/ChangeLog:

	PR target/67896
	* config/aarch64/aarch64-builtins.c
	(aarch64_init_simd_builtin_types): Do not set structural
	equality to __Poly{8,16,64,128}_t types.

gcc/testsuite/ChangeLog:

	PR target/67896
	* gcc.target/aarch64/simd/pr67896.C: New.

From-SVN: r232818
This commit is contained in:
Roger Ferrer Ibáñez 2016-01-26 10:04:46 +00:00 committed by James Greenhalgh
parent 5ee31e57d2
commit b96824c484
4 changed files with 25 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2016-01-26 Roger Ferrer Ibáñez <rofirrim@gmail.com>
PR target/67896
* config/aarch64/aarch64-builtins.c
(aarch64_init_simd_builtin_types): Do not set structural
equality to __Poly{8,16,64,128}_t types.
2016-01-26 Richard Sandiford <richard.sandiford@arm.com>
PR tree-optimization/69400

View File

@ -614,14 +614,16 @@ aarch64_init_simd_builtin_types (void)
enum machine_mode mode = aarch64_simd_types[i].mode;
if (aarch64_simd_types[i].itype == NULL)
aarch64_simd_types[i].itype =
build_distinct_type_copy
(build_vector_type (eltype, GET_MODE_NUNITS (mode)));
{
aarch64_simd_types[i].itype
= build_distinct_type_copy
(build_vector_type (eltype, GET_MODE_NUNITS (mode)));
SET_TYPE_STRUCTURAL_EQUALITY (aarch64_simd_types[i].itype);
}
tdecl = add_builtin_type (aarch64_simd_types[i].name,
aarch64_simd_types[i].itype);
TYPE_NAME (aarch64_simd_types[i].itype) = tdecl;
SET_TYPE_STRUCTURAL_EQUALITY (aarch64_simd_types[i].itype);
}
#define AARCH64_BUILD_SIGNED_TYPE(mode) \

View File

@ -1,3 +1,8 @@
2016-01-26 Roger Ferrer Ibáñez <rofirrim@gmail.com>
PR target/67896
* gcc.target/aarch64/simd/pr67896.C: New.
2016-01-26 Richard Sandiford <richard.sandiford@arm.com>
PR tree-optimization/69400

View File

@ -0,0 +1,7 @@
typedef __Poly8_t A;
typedef __Poly16_t A; /* { dg-error "conflicting declaration" } */
typedef __Poly64_t A; /* { dg-error "conflicting declaration" } */
typedef __Poly128_t A; /* { dg-error "conflicting declaration" } */
typedef __Poly8x8_t B;
typedef __Poly16x8_t B; /* { dg-error "conflicting declaration" } */