https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100171
--- Comment #4 from Andrew Pinski ---
testcase:
#include
#include
template class foo
{
public:
using array_type = std::array;
array_type
value;
inline constexpr foo&operator+=(const foo& arg)noexcept
{
for (size_t i=0; i, 1>;
void exe_self_1d(ARR_1D& out, const ARR_1D& arg) noexcept {
exe_self(out, arg); }
void exe_1d(ARR_1D& out, const ARR_1D& arg1, const ARR_1D& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_2D = std::array, 2>;
void exe_self_2d(ARR_2D& out, const ARR_2D& arg) noexcept {
exe_self(out, arg); }
void exe_2d(ARR_2D& out, const ARR_2D& arg1, const ARR_2D& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_4D = std::array, 4>;
void exe_self_4d(ARR_4D& out, const ARR_4D& arg) noexcept {
exe_self(out, arg); }
void exe_4d(ARR_4D& out, const ARR_4D& arg1, const ARR_4D& arg2) noexcept {
exe(out, arg1, arg2); }
// float32
using ARR_1F = std::array, 1>;
void exe_self_1f(ARR_1F& out, const ARR_1F& arg) noexcept {
exe_self(out, arg); }
void exe_1f(ARR_1F& out, const ARR_1F& arg1, const ARR_1F& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_2F = std::array, 2>;
void exe_self_2f(ARR_2F& out, const ARR_2F& arg) noexcept {
exe_self(out, arg); }
void exe_2f(ARR_2F& out, const ARR_2F& arg1, const ARR_2F& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_4F = std::array, 4>;
void exe_self_4f(ARR_4F& out, const ARR_4F& arg) noexcept {
exe_self(out, arg); }
void exe_4f(ARR_4F& out, const ARR_4F& arg1, const ARR_4F& arg2) noexcept {
exe(out, arg1, arg2); }
// int64
using ARR_1i64 = std::array, 1>;
void exe_self_1i64(ARR_1i64& out, const ARR_1i64& arg)
noexcept { exe_self(out, arg); }
void exe_1i64(ARR_1i64& out, const ARR_1i64& arg1, const ARR_1i64& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_2i64 = std::array, 2>;
void exe_self_2i64(ARR_2i64& out, const ARR_2i64& arg)
noexcept { exe_self(out, arg); }
void exe_2i64(ARR_2i64& out, const ARR_2i64& arg1, const ARR_2i64& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_4i64 = std::array, 4>;
void exe_self_4i64(ARR_4i64& out, const ARR_4i64& arg)
noexcept { exe_self(out, arg); }
void exe_4i64(ARR_4i64& out, const ARR_4i64& arg1, const ARR_4i64& arg2)
noexcept { exe(out, arg1, arg2); }
// int32
using ARR_1i32 = std::array, 1>;
void exe_self_1i32(ARR_1i32& out, const ARR_1i32& arg)
noexcept { exe_self(out, arg); }
void exe_1i32(ARR_1i32& out, const ARR_1i32& arg1, const ARR_1i32& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_2i32 = std::array, 2>;
void exe_self_2i32(ARR_2i32& out, const ARR_2i32& arg)
noexcept { exe_self(out, arg); }
void exe_2i32(ARR_2i32& out, const ARR_2i32& arg1, const ARR_2i32& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_4i32 = std::array, 4>;
void exe_self_4i32(ARR_4i32& out, const ARR_4i32& arg)
noexcept { exe_self(out, arg); }
void exe_4i32(ARR_4i32& out, const ARR_4i32& arg1, const ARR_4i32& arg2)
noexcept { exe(out, arg1, arg2); }
// int16
using ARR_1i16 = std::array, 1>;
void exe_self_1i16(ARR_1i16& out, const ARR_1i16& arg)
noexcept { exe_self(out, arg); }
void exe_1i16(ARR_1i16& out, const ARR_1i16& arg1, const ARR_1i16& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_2i16 = std::array, 2>;
void exe_self_2i16(ARR_2i16& out, const ARR_2i16& arg)
noexcept { exe_self(out, arg); }
void exe_2i16(ARR_2i16& out, const ARR_2i16& arg1, const ARR_2i16& arg2)
noexcept { exe(out, arg1, arg2); }
using ARR_4i16 = std::array, 4>;
void exe_self_4i16(ARR_4i16& out, const ARR_4i16& arg)
noexcept { exe_self(out, arg); }
void exe_4i16(ARR_4i16& out, const ARR_4i16& arg1, const ARR_4i16& arg2)
noexcept { exe(out, arg1, arg2); }
// int8
using ARR_1i8 = std::array, 1>;
void exe_self_1i8(ARR_1i8& out, const ARR_1i8& arg) noexcept {
exe_self(out, arg); }
void exe_1i8(ARR_1i8& out, const ARR_1i8& arg1, const ARR_1i8& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_2i8 = std::array, 2>;
void exe_self_2i8(ARR_2i8& out, const ARR_2i8& arg) noexcept {
exe_self(out, arg); }
void exe_2i8(ARR_2i8& out, const ARR_2i8& arg1, const ARR_2i8& arg2) noexcept {
exe(out, arg1, arg2); }
using ARR_4i8 = std::array, 4>;
void exe_self_4i8(ARR_4i8& out, const ARR_4i8& arg) noexcept {
exe_self(out, arg); }
void exe_4i8(ARR_4i8& out, const ARR_4i8& arg1, const ARR_4i8& arg2) noexcept {
exe(out, arg1, arg2); }