aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-10-31 17:16:31 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-10-31 17:16:31 +0000
commit6ff0cdebb1bc281ba2374f3ecdbe358c4fa74093 (patch)
tree32e844c22faf6b6d96e34521ee0fce7707e521b4
parentaaa80941e042d18dcd5add6e7bb28cb392767a39 (diff)
downloadgcc-6ff0cdebb1bc281ba2374f3ecdbe358c4fa74093.zip
gcc-6ff0cdebb1bc281ba2374f3ecdbe358c4fa74093.tar.gz
gcc-6ff0cdebb1bc281ba2374f3ecdbe358c4fa74093.tar.bz2
[AArch64] Fix build for non-default languages
The SVE PCS support broke go, D and Ada because those languages don't call TARGET_INIT_BUILTINS. We therefore ended up trying to get the TYPE_MAIN_VARIANT of a null __SVBool_t. We shouldn't really need to apply TYPE_MAIN_VARIANT there anyway, since the ABI-defined types are (and need to be) their own main variants. This patch asserts for that instead. 2019-10-31 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Assert that the type we store in abi_vector_types is its own main variant. (svbool_type_p): Don't apply TYPE_MAIN_VARIANT here. From-SVN: r277680
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64-sve-builtins.cc4
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 66b7a14..affa74c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2019-10-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
+ Assert that the type we store in abi_vector_types is its own
+ main variant.
+ (svbool_type_p): Don't apply TYPE_MAIN_VARIANT here.
+
2019-10-31 Richard Earnshaw <rearnsha@arm.com>
* config/arm/arm.c (arm_legitimize_address): Don't form negative offsets
diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc
index 70d7b1a..424f64a 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins.cc
+++ b/gcc/config/aarch64/aarch64-sve-builtins.cc
@@ -2993,6 +2993,7 @@ register_builtin_types ()
BITS_PER_SVE_VECTOR));
}
vectype = build_distinct_type_copy (vectype);
+ gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype));
SET_TYPE_STRUCTURAL_EQUALITY (vectype);
TYPE_ARTIFICIAL (vectype) = 1;
abi_vector_types[i] = vectype;
@@ -3235,8 +3236,7 @@ bool
svbool_type_p (const_tree type)
{
tree abi_type = abi_vector_types[VECTOR_TYPE_svbool_t];
- return (type != error_mark_node
- && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (abi_type));
+ return type != error_mark_node && TYPE_MAIN_VARIANT (type) == abi_type;
}
/* If TYPE is a built-in type defined by the SVE ABI, return the mangled name,