aboutsummaryrefslogtreecommitdiff
path: root/gcc/hosthooks.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2020-08-25 13:31:17 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2020-08-25 13:31:17 +0100
commit9ded41a39c1bb29f356485a9ec3a573fb75ded12 (patch)
tree92e2c333a5be0ba32da131fc8cfc02e73c78eb5f /gcc/hosthooks.h
parentdcb043351307001a85fc1e7d56669f5adc9628f7 (diff)
downloadgcc-9ded41a39c1bb29f356485a9ec3a573fb75ded12.zip
gcc-9ded41a39c1bb29f356485a9ec3a573fb75ded12.tar.gz
gcc-9ded41a39c1bb29f356485a9ec3a573fb75ded12.tar.bz2
aarch64: Tweaks to the handling of fixed-length SVE types
This patch is really four things rolled into one, since separating them seemed artificial: - Update the mangling of the fixed-length SVE ACLE types to match the upcoming spec. The idea is to mangle: VLAT __attribute__((arm_sve_vector_bits(N))) as an instance __SVE_VLS<VLAT, N> of the template: __SVE_VLS<typename, unsigned> - Give the fixed-length types their own TYPE_DECL. This is needed to make the above mangling fix work, but should also be a minor QoI improvement for error reporting. Unfortunately, the names are quite verbose, e.g.: svint8_t __attribute__((arm_sve_vector_bits(512))) but anything shorter would be ad-hoc syntax and so might be more confusing. - Improve the error message reported when arm_sve_vector_bits is applied to tuples, such as: svint32x2_t __attribute__((arm_sve_vector_bits(N))) Previously we would complain that the type isn't an SVE type; now we complain that it isn't a vector type. - Don't allow arm_sve_vector_bits(N) to be applied to existing fixed-length SVE types. gcc/ * config/aarch64/aarch64-sve-builtins.cc (add_sve_type_attribute): Take the ACLE name of the type as a parameter and add it as fourth argument to the "SVE type" attribute. (register_builtin_types): Update call accordingly. (register_tuple_type): Likewise. Construct the name of the type earlier in order to do this. (get_arm_sve_vector_bits_attributes): New function. (handle_arm_sve_vector_bits_attribute): Report a more sensible error message if the attribute is applied to an SVE tuple type. Don't allow the attribute to be applied to an existing fixed-length SVE type. Mangle the new type as __SVE_VLS<type, vector-bits>. Add a dummy TYPE_DECL to the new type. gcc/testsuite/ * g++.target/aarch64/sve/acle/general-c++/attributes_2.C: New test. * g++.target/aarch64/sve/acle/general-c++/mangle_6.C: Likewise. * g++.target/aarch64/sve/acle/general-c++/mangle_7.C: Likewise. * g++.target/aarch64/sve/acle/general-c++/mangle_8.C: Likewise. * g++.target/aarch64/sve/acle/general-c++/mangle_9.C: Likewise. * g++.target/aarch64/sve/acle/general-c++/mangle_10.C: Likewise. * gcc.target/aarch64/sve/acle/general/attributes_7.c: Check the error messages reported when arm_sve_vector_bits is applied to SVE tuple types or to existing fixed-length SVE types.
Diffstat (limited to 'gcc/hosthooks.h')
0 files changed, 0 insertions, 0 deletions