GCC: workaround for multiple alignas priority in PartitionAddressSpace

PoolSetup in PartitionAddressSpace is declared with two alignas
specifiers when using thread isolation, one for page size, and the
other for partition cache line. C++ is expected to apply the most
strict alignas (the bigger one), but GCC gives more priority to last
one.

This has been reported in GCC at:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64236

To workaround this we change the order of the alignas declarations.

Bug: 819294
Change-Id: Ic9e7662d8aeb94957f6a1f009b02d5b5fc60c655
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4552576
Commit-Queue: José Dapena Paz <jdapena@igalia.com>
Reviewed-by: Keishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1147775}
diff --git a/base/allocator/partition_allocator/partition_address_space.h b/base/allocator/partition_allocator/partition_address_space.h
index 71c0c0a..8b20e5f 100644
--- a/base/allocator/partition_allocator/partition_address_space.h
+++ b/base/allocator/partition_allocator/partition_address_space.h
@@ -314,7 +314,7 @@
   static constexpr uintptr_t kUninitializedPoolBaseAddress =
       static_cast<uintptr_t>(-1);
 
-  struct PA_THREAD_ISOLATED_ALIGN alignas(kPartitionCachelineSize) PoolSetup {
+  struct alignas(kPartitionCachelineSize) PA_THREAD_ISOLATED_ALIGN PoolSetup {
     // Before PartitionAddressSpace::Init(), no allocation are allocated from a
     // reserved address space. Therefore, set *_pool_base_address_ initially to
     // -1, so that PartitionAddressSpace::IsIn*Pool() always returns false.