From 497f281c25c4af5fc62c8662c23fc2a615abc4bd Mon Sep 17 00:00:00 2001 From: Steve Ellcey Date: Thu, 14 Feb 2019 21:04:12 +0000 Subject: [PATCH] aarch64.c (aarch64_attribute_table): Change affects_type_identity to true for aarch64_vector_pcs. 2018-02-14 Steve Ellcey * 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 | 7 +++++++ gcc/config/aarch64/aarch64.c | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 727e37ee69f..1c4aa5da272 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-14 Steve Ellcey + + * 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 PR target/88850 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 1fa28fe82fe..9f52cc9ff3b 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -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 -- 2.30.2