================
@@ -1258,16 +1252,19 @@ llvm::Value *CodeGenFunction::GetCountedByFieldExprGEP(
return nullptr;
}
- RecIndicesTy Indices;
- getGEPIndicesToField(*this, RD, CountDecl, Indices);
- if (Indices.empty())
+ // A bit-field count has no byte offset of its own to load from.
+ if (CountDecl->isBitField())
+ return nullptr;
+
+ // Struct GEP indices can't reach a count inside a union, because the union
+ // lowers to its largest member and the indices would walk that one instead.
+ int64_t Offset = 0;
+ if (!getFieldOffsetInBits(*this, RD, CountDecl, Offset))
return nullptr;
----------------
bwendling wrote:
Please put this code before the if-statement (from `if
(CountDecl->isBitField())` to here) above line 1248 (the `if
(StructBase->getType()->isPointerType())` if). I want to avoid emitting any
code that won't be used.
https://github.com/llvm/llvm-project/pull/228309
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits