Common/Crypto/AES: Resolve -Wignored-attributes warnings

The alias for __m128i is typically something like:

typedef long long __m128i __attribute__((__vector_size__(16), __may_alias__));

and the part that ends up not getting preserved is the __may_alias__
attribute specifier.

So, in order to preserve that, we can just use a wrapper struct, so the
data type itself isn't being passed through the template.
This commit is contained in:
Lioncash 2023-12-12 19:21:33 -05:00
parent 7b57a4a37d
commit bced5fac18
1 changed files with 13 additions and 1 deletions

View File

@ -250,7 +250,19 @@ public:
}
private:
std::array<__m128i, NUM_ROUND_KEYS> round_keys;
// Ensures alignment specifiers are respected.
struct XmmReg
{
__m128i data;
XmmReg& operator=(const __m128i& m)
{
data = m;
return *this;
}
operator __m128i() const { return data; }
};
std::array<XmmReg, NUM_ROUND_KEYS> round_keys;
};
#endif