[PATCH] Do not set structural equality on polynomial types
authorRoger Ferrer Ibáñez <rofirrim@gmail.com>
Tue, 26 Jan 2016 10:04:46 +0000 (10:04 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Tue, 26 Jan 2016 10:04:46 +0000 (10:04 +0000)
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

gcc/ChangeLog
gcc/config/aarch64/aarch64-builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/simd/pr67896.C [new file with mode: 0644]

index 7a4e57b..70e5fd6 100644 (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
index 925034b..5573903 100644 (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)  \
index ffb4314..ae150ba 100644 (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
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/pr67896.C b/gcc/testsuite/gcc.target/aarch64/simd/pr67896.C
new file mode 100644 (file)
index 0000000..1f916e0
--- /dev/null
@@ -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" } */