gcc7 miscompiles the "undo" mode of translate_if_needed() in
lzms_common.c because the get_unaligned_le16() was incorrectly being
moved before the put_unaligned_le32(). Fix it by marking the special
"unaligned" structs with the may_alias attribute.
#define DEFINE_UNALIGNED_TYPE(type) \
struct type##_unaligned { \
type v; \
#define DEFINE_UNALIGNED_TYPE(type) \
struct type##_unaligned { \
type v; \
+} _packed_attribute _may_alias_attribute; \
\
static forceinline type \
load_##type##_unaligned(const void *p) \
\
static forceinline type \
load_##type##_unaligned(const void *p) \