Commit 2cc9fa0a authored by Tobias Tebbi's avatar Tobias Tebbi Committed by V8 LUCI CQ

[torque] improve enum generation for bitsets

Explicitly specify the enum base type for Flags enums generated
from Torque bitfield structs. Before, this was implicitly a signed
integer type. This caused a recent gcc compile issue with signed
and unsigned comparisons triggered by
https://chromium-review.googlesource.com/c/v8/v8/+/3251177

Bug: v8:7793
Change-Id: Iceb3c8632cfc95766b5e6ce7fae47cf5d002b9f7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3253358
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#77658}
parent cef8c1f3
......@@ -3864,11 +3864,11 @@ void ImplementationVisitor::GenerateBitFields(
// If every field is one bit, we can also generate a convenient enum.
if (all_single_bits) {
header << " enum Flag { \\\n";
header << " enum Flag: " << type_name << " { \\\n";
header << " kNone = 0, \\\n";
for (const auto& field : type->fields()) {
header << " k" << CamelifyString(field.name_and_type.name)
<< " = 1 << " << field.offset << ", \\\n";
header << " k" << CamelifyString(field.name_and_type.name) << " = "
<< type_name << "{1} << " << field.offset << ", \\\n";
}
header << " }; \\\n";
header << " using Flags = base::Flags<Flag>; \\\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment