unsigned CVRQualifiers) {
const CGRecordLayout &RL =
CGM.getTypes().getCGRecordLayout(Field->getParent());
- const CGRecordLayout::BitFieldInfo &Info = RL.getBitFieldInfo(Field);
+ const CGBitFieldInfo &Info = RL.getBitFieldInfo(Field);
// FIXME: CodeGenTypes should expose a method to get the appropriate type for
// FieldTy (the appropriate type is ABI-dependent).
const CGRecordLayout &RL =
CGM.getTypes().getCGRecordLayout(Field->getParent());
if (Field->isBitField()) {
- const CGRecordLayout::BitFieldInfo &Info = RL.getBitFieldInfo(Field);
+ const CGBitFieldInfo &Info = RL.getBitFieldInfo(Field);
const llvm::Type *Ty =
CGM.getTypes().ConvertTypeForMemRecursive(Field->getType());
namespace clang {
namespace CodeGen {
+class CGBitFieldInfo {
+public:
+ CGBitFieldInfo(unsigned FieldNo, unsigned Start, unsigned Size)
+ : FieldNo(FieldNo), Start(Start), Size(Size) {}
+
+ unsigned FieldNo;
+ unsigned Start;
+ unsigned Size;
+};
+
/// CGRecordLayout - This class handles struct and union layout info while
/// lowering AST types to LLVM types.
///
CGRecordLayout(const CGRecordLayout&); // DO NOT IMPLEMENT
void operator=(const CGRecordLayout&); // DO NOT IMPLEMENT
-public:
- struct BitFieldInfo {
- BitFieldInfo(unsigned FieldNo,
- unsigned Start,
- unsigned Size)
- : FieldNo(FieldNo), Start(Start), Size(Size) {}
-
- unsigned FieldNo;
- unsigned Start;
- unsigned Size;
- };
-
private:
/// The LLVMType corresponding to this record layout.
const llvm::Type *LLVMType;
/// Map from (bit-field) struct field to the corresponding llvm struct type
/// field no. This info is populated by record builder.
- llvm::DenseMap<const FieldDecl *, BitFieldInfo> BitFields;
+ llvm::DenseMap<const FieldDecl *, CGBitFieldInfo> BitFields;
/// Whether one of the fields in this record layout is a pointer to data
/// member, or a struct that contains pointer to data member.
/// \brief Return llvm::StructType element number that corresponds to the
/// field FD.
- const BitFieldInfo &getBitFieldInfo(const FieldDecl *FD) const {
+ const CGBitFieldInfo &getBitFieldInfo(const FieldDecl *FD) const {
assert(FD->isBitField() && "Invalid call for non bit-field decl!");
- llvm::DenseMap<const FieldDecl *, BitFieldInfo>::const_iterator
+ llvm::DenseMap<const FieldDecl *, CGBitFieldInfo>::const_iterator
it = BitFields.find(FD);
assert(it != BitFields.end() && "Unable to find bitfield info");
return it->second;
const CGRecordLayoutBuilder::LLVMBitFieldInfo &Info =
Builder.LLVMBitFields[i];
- CGRecordLayout::BitFieldInfo BFI(Info.FieldNo, Info.Start, Info.Size);
+ CGBitFieldInfo BFI(Info.FieldNo, Info.Start, Info.Size);
RL->BitFields.insert(std::make_pair(Info.FD, BFI));
}