Fix GCC 8.3.0 warning: ‘packed’ attribute ignored.

Fix the following GCC 8.3.0 warning:

aom/aom_dsp/simd/v64_intrinsics_arm.h: In function ‘u32_store_unaligned’:
aom/aom_dsp/simd/v64_intrinsics_arm.h:74:3: error: ‘packed’ attribute ignored for type ‘uint32_t *’ {aka ‘unsigned int *’} [-Werror=attributes]
   *((__attribute((packed)) uint32_t *)p) = a;
   ^

GCC 8.3.0 ignores __attribute__((packed)) on individual variables, but
we can tell it that a struct is packed (unaligned), which has the same
effect.

Note: Our Jenkins nightly builds use GCC 6.3.0, which does not emit this
warning.

Change-Id: I84486eb5f45c30e57c07431968385dff9b34bfe1
diff --git a/aom_dsp/simd/v64_intrinsics_arm.h b/aom_dsp/simd/v64_intrinsics_arm.h
index 8f39ad6..0f661a1 100644
--- a/aom_dsp/simd/v64_intrinsics_arm.h
+++ b/aom_dsp/simd/v64_intrinsics_arm.h
@@ -71,7 +71,11 @@
 #elif defined(__CC_ARM)
   *(__packed uint32_t *)p) = a;
 #elif defined(__GNUC__)
-  *((__attribute((packed)) uint32_t *)p) = a;
+  struct Unaligned32Struct {
+    uint32_t value;
+    uint8_t dummy;  // To make the size non-power-of-two.
+  } __attribute__((__packed__));
+  ((struct Unaligned32Struct *)p)->value = a;
 #else
   vst1_lane_u32((uint32_t *)p, vreinterpret_u32_s64((uint64x1_t)(uint64_t)a),
                 0);