diff --git a/arch/AArch64/AArch64AddressingModes.h b/arch/AArch64/AArch64AddressingModes.h index 9a5becb7be..69c45b9bd0 100644 --- a/arch/AArch64/AArch64AddressingModes.h +++ b/arch/AArch64/AArch64AddressingModes.h @@ -827,7 +827,8 @@ static inline uint64_t AArch64_AM_decodeAdvSIMDModImmType12(uint8_t Imm) #define DEFINE_isSVEMaskOfIdenticalElements(T) \ static inline bool CONCAT(AArch64_AM_isSVEMaskOfIdenticalElements, T)(int64_t Imm) \ { \ - T *Parts = (T *)(&(Imm)); \ + T Parts[sizeof(int64_t) / sizeof(T)]; \ + memcpy(Parts, &Imm, sizeof(int64_t) / sizeof(T) * sizeof(T)); \ for (int i = 0; i < (sizeof(int64_t) / sizeof(T)); i++) { \ if (Parts[i] != Parts[0]) \ return false; \