#include "clang/AST/Decl.h"
namespace llvm {
class raw_ostream;
- class Type;
+ class StructType;
}
namespace clang {
private:
/// The LLVM type corresponding to this record layout.
- const llvm::Type *LLVMType;
+ const llvm::StructType *LLVMType;
/// The LLVM type for the non-virtual part of this record layout, used for
/// laying out the record as a base.
- const llvm::Type *NonVirtualBaseLLVMType;
+ const llvm::StructType *NonVirtualBaseLLVMType;
/// Map from (non-bit-field) struct field to the corresponding llvm struct
/// type field no. This info is populated by record builder.
bool IsZeroInitializable : 1;
public:
- CGRecordLayout(const llvm::Type *LLVMType,
- const llvm::Type *NonVirtualBaseLLVMType,
+ CGRecordLayout(const llvm::StructType *LLVMType,
+ const llvm::StructType *NonVirtualBaseLLVMType,
bool IsZeroInitializable)
: LLVMType(LLVMType), NonVirtualBaseLLVMType(NonVirtualBaseLLVMType),
IsZeroInitializable(IsZeroInitializable) {}
/// \brief Return the LLVM type associated with this record.
- const llvm::Type *getLLVMType() const {
+ const llvm::StructType *getLLVMType() const {
return LLVMType;
}
- const llvm::Type *getNonVirtualBaseLLVMType() const {
+ const llvm::StructType *getNonVirtualBaseLLVMType() const {
return NonVirtualBaseLLVMType;
}
Builder.Layout(D);
- const llvm::Type *Ty = llvm::StructType::get(getLLVMContext(),
- Builder.FieldTypes,
- Builder.Packed);
+ const llvm::StructType *Ty = llvm::StructType::get(getLLVMContext(),
+ Builder.FieldTypes,
+ Builder.Packed);
- const llvm::Type *BaseTy = 0;
+ const llvm::StructType *BaseTy = 0;
if (isa<CXXRecordDecl>(D)) {
if (Builder.NonVirtualBaseTypeIsSameAsCompleteType)
BaseTy = Ty;