[AArch64] Fix build for non-default languages
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 31 Oct 2019 17:16:31 +0000 (17:16 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 31 Oct 2019 17:16:31 +0000 (17:16 +0000)
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

gcc/ChangeLog
gcc/config/aarch64/aarch64-sve-builtins.cc

index 66b7a1422519afa53eb08da7a84efe5b67ce6d94..affa74cdd255084b58ea8305a1f6059a144736dd 100644 (file)
@@ -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
index 70d7b1a165d0103c9a6649325fff76722a54ed74..424f64adfefeefe55c729c7cfbf87020f7bb1d0b 100644 (file)
@@ -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,