chromium/chromium-83-gcc-compatibili...

26 lines
1.1 KiB
Diff

From 55ce03222ee4c5ed2442278264028f6fb5bffa34 Mon Sep 17 00:00:00 2001
From: David Seifert <david.seifert@gmail.com>
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);
}