https://gcc.gnu.org/g:761cf60218890af31cfb4a4cebc4509d3262a9bb
commit r15-5777-g761cf60218890af31cfb4a4cebc4509d3262a9bb Author: Tejas Belagod <tejas.bela...@arm.com> Date: Fri Jul 26 14:47:43 2024 +0530 aarch64: Make C/C++ operations possible on SVE ACLE types. This patch changes the TYPE_INDIVISBLE flag to 0 to enable SVE ACLE types to be treated as GNU vectors and have the same semantics with operations that are defined on GNU vectors. gcc/ChangeLog: * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Flip TYPE_INDIVISBLE flag for SVE ACLE vector types. Diff: --- gcc/config/aarch64/aarch64-sve-builtins.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc index 0fec1cd439e7..adbadd303d40 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins.cc @@ -4576,6 +4576,9 @@ register_builtin_types () vectype = build_truth_vector_type_for_mode (BYTES_PER_SVE_VECTOR, VNx16BImode); num_pr = 1; + /* Leave svbool_t as indivisible for now. We don't yet support + C/C++ operators on predicates. */ + TYPE_INDIVISIBLE_P (vectype) = 1; } else { @@ -4592,12 +4595,12 @@ register_builtin_types () && TYPE_ALIGN (vectype) == 128 && known_eq (size, BITS_PER_SVE_VECTOR)); num_zr = 1; + TYPE_INDIVISIBLE_P (vectype) = 0; } vectype = build_distinct_type_copy (vectype); gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype)); SET_TYPE_STRUCTURAL_EQUALITY (vectype); TYPE_ARTIFICIAL (vectype) = 1; - TYPE_INDIVISIBLE_P (vectype) = 1; make_type_sizeless (vectype); } if (num_pr)