From 55ce03222ee4c5ed2442278264028f6fb5bffa34 Mon Sep 17 00:00:00 2001 From: David Seifert Date: Sun, 03 May 2020 17:05:43 +0200 Subject: [PATCH] Add compatibility workaround for GCC 6/7/8 Bug: 819294 Change-Id: I632c4ecf7d7f9876b37a6cff05c0408125656257 --- diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h index 5a4468d..9dc95fa 100644 --- a/third_party/blink/renderer/platform/wtf/hash_table.h +++ b/third_party/blink/renderer/platform/wtf/hash_table.h @@ -673,7 +673,10 @@ return IsEmptyBucket(key) || IsDeletedBucket(key); } static bool IsEmptyOrDeletedBucketSafe(const Value& value) { - alignas(std::max(alignof(Key), sizeof(size_t))) char buf[sizeof(Key)]; + // GCC 6, 7 and 8 require this indirection due to a constexpr bug: + // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94929 + constexpr size_t kAlignment = std::max(alignof(Key), sizeof(size_t)); + alignas(kAlignment) char buf[sizeof(Key)]; const Key& key = Extractor::ExtractSafe(value, &buf); return IsEmptyBucket(key) || IsDeletedBucket(key); }