aarch64.c (aarch64_attribute_table): Change affects_type_identity to true for aarch64...
authorSteve Ellcey <sellcey@marvell.com>
Thu, 14 Feb 2019 21:04:12 +0000 (21:04 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Thu, 14 Feb 2019 21:04:12 +0000 (21:04 +0000)
2018-02-14  Steve Ellcey  <sellcey@marvell.com>

* config/aarch64/aarch64.c (aarch64_attribute_table): Change
affects_type_identity to true for aarch64_vector_pcs.
(aarch64_comp_type_attributes): New function.
(TARGET_COMP_TYPE_ATTRIBUTES): New macro.

From-SVN: r268902

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index 727e37ee69f58f609d3cb5dcafb5a7bfb780a675..1c4aa5da2726b130bda6604adb894cbe3ea0bccf 100644 (file)
@@ -1,3 +1,10 @@
+2018-02-14  Steve Ellcey  <sellcey@marvell.com>
+
+       * config/aarch64/aarch64.c (aarch64_attribute_table): Change
+       affects_type_identity to true for aarch64_vector_pcs.
+       (aarch64_comp_type_attributes): New function.
+       (TARGET_COMP_TYPE_ATTRIBUTES): New macro.
+
 2019-02-14  Tamar Christina  <tamar.christina@arm.com>
 
        PR target/88850
index 1fa28fe82fefe23c8f89ecbd8923de248c028d84..9f52cc9ff3b04cd94f96d9ae83f11ac914eac1cc 100644 (file)
@@ -1180,7 +1180,7 @@ static const struct attribute_spec aarch64_attribute_table[] =
 {
   /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
        affects_type_identity, handler, exclude } */
-  { "aarch64_vector_pcs", 0, 0, false, true,  true,  false, NULL, NULL },
+  { "aarch64_vector_pcs", 0, 0, false, true,  true,  true,  NULL, NULL },
   { NULL,                 0, 0, false, false, false, false, NULL, NULL }
 };
 
@@ -18709,6 +18709,17 @@ aarch64_simd_clone_usable (struct cgraph_node *node)
     }
 }
 
+/* Implement TARGET_COMP_TYPE_ATTRIBUTES */
+
+static int
+aarch64_comp_type_attributes (const_tree type1, const_tree type2)
+{
+  if (lookup_attribute ("aarch64_vector_pcs", TYPE_ATTRIBUTES (type1))
+      != lookup_attribute ("aarch64_vector_pcs", TYPE_ATTRIBUTES (type2)))
+    return 0;
+  return 1;
+}
+
 /* Implement TARGET_STACK_PROTECT_GUARD. In case of a
    global variable based guard use the default else
    return a null tree.  */
@@ -19228,6 +19239,9 @@ aarch64_libgcc_floating_mode_supported_p
 #undef TARGET_SIMD_CLONE_USABLE
 #define TARGET_SIMD_CLONE_USABLE aarch64_simd_clone_usable
 
+#undef TARGET_COMP_TYPE_ATTRIBUTES
+#define TARGET_COMP_TYPE_ATTRIBUTES aarch64_comp_type_attributes
+
 #if CHECKING_P
 #undef TARGET_RUN_TARGET_SELFTESTS
 #define TARGET_RUN_TARGET_SELFTESTS selftest::aarch64_run_selftests