Skip to content

Commit 7d9634e

Browse files
committed
[clang][Interp][NFC] Propagate IsActive state in unions properly
This resolves an older FIXME comment.
1 parent e3bd627 commit 7d9634e

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

clang/lib/AST/Interp/Descriptor.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,8 @@ static void moveArrayDesc(Block *B, const std::byte *Src, std::byte *Dst,
137137
}
138138

139139
static void initField(Block *B, std::byte *Ptr, bool IsConst, bool IsMutable,
140-
bool IsActive, const Descriptor *D,
140+
bool IsActive, bool IsUnion, const Descriptor *D,
141141
unsigned FieldOffset) {
142-
bool IsUnion = false; // FIXME
143142
auto *Desc = reinterpret_cast<InlineDescriptor *>(Ptr + FieldOffset) - 1;
144143
Desc->Offset = FieldOffset;
145144
Desc->Desc = D;
@@ -174,7 +173,7 @@ static void initBase(Block *B, std::byte *Ptr, bool IsConst, bool IsMutable,
174173
initBase(B, Ptr + FieldOffset, IsConst, IsMutable, IsActive, V.Desc,
175174
V.Offset, false);
176175
for (const auto &F : D->ElemRecord->fields())
177-
initField(B, Ptr + FieldOffset, IsConst, IsMutable, IsActive, F.Desc,
176+
initField(B, Ptr + FieldOffset, IsConst, IsMutable, IsActive, IsUnion, F.Desc,
178177
F.Offset);
179178

180179
// If this is initializing a virtual base, we do NOT want to consider its
@@ -193,7 +192,7 @@ static void ctorRecord(Block *B, std::byte *Ptr, bool IsConst, bool IsMutable,
193192
for (const auto &V : D->ElemRecord->bases())
194193
initBase(B, Ptr, IsConst, IsMutable, IsActive, V.Desc, V.Offset, false);
195194
for (const auto &F : D->ElemRecord->fields())
196-
initField(B, Ptr, IsConst, IsMutable, IsActive, F.Desc, F.Offset);
195+
initField(B, Ptr, IsConst, IsMutable, IsActive, D->ElemRecord->isUnion(), F.Desc, F.Offset);
197196
for (const auto &V : D->ElemRecord->virtual_bases())
198197
initBase(B, Ptr, IsConst, IsMutable, IsActive, V.Desc, V.Offset, true);
199198
}

0 commit comments

Comments
 (0)