diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-10-31 17:16:31 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-10-31 17:16:31 +0000 |
commit | 6ff0cdebb1bc281ba2374f3ecdbe358c4fa74093 (patch) | |
tree | 32e844c22faf6b6d96e34521ee0fce7707e521b4 | |
parent | aaa80941e042d18dcd5add6e7bb28cb392767a39 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-sve-builtins.cc | 4 |
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, |