Simplify.

llvm-svn: 69793
This commit is contained in:
Daniel Dunbar 2009-04-22 08:50:59 +00:00
parent 6cbf5bb9bb
commit 83a66f78d2
1 changed files with 11 additions and 23 deletions

View File

@ -464,26 +464,20 @@ const llvm::Type *CodeGenTypes::ConvertTagDeclType(const TagDecl *TD) {
const llvm::Type *ResultType;
const RecordDecl *RD = cast<const RecordDecl>(TD);
if (TD->isStruct() || TD->isClass()) {
// There isn't any extra information for empty structures/unions.
if (RD->field_empty(getContext())) {
ResultType = llvm::StructType::get(std::vector<const llvm::Type*>());
} else {
// Layout fields.
RecordOrganizer RO(*this, *RD);
if (TD->isStruct() || TD->isClass())
RO.layoutStructFields(Context.getASTRecordLayout(RD));
// Get llvm::StructType.
const Type *Key =
Context.getTagDeclType(const_cast<TagDecl*>(TD)).getTypePtr();
CGRecordLayouts[Key] = new CGRecordLayout(RO.getLLVMType(),
RO.getPaddingFields());
ResultType = RO.getLLVMType();
} else if (TD->isUnion()) {
// Just use the largest element of the union, breaking ties with the
// highest aligned member.
if (!RD->field_empty(getContext())) {
RecordOrganizer RO(*this, *RD);
else {
assert(TD->isUnion() && "unknown tag decl kind!");
RO.layoutUnionFields(Context.getASTRecordLayout(RD));
}
// Get llvm::StructType.
const Type *Key =
@ -491,12 +485,6 @@ const llvm::Type *CodeGenTypes::ConvertTagDeclType(const TagDecl *TD) {
CGRecordLayouts[Key] = new CGRecordLayout(RO.getLLVMType(),
RO.getPaddingFields());
ResultType = RO.getLLVMType();
} else {
ResultType = llvm::StructType::get(std::vector<const llvm::Type*>());
}
} else {
assert(0 && "FIXME: Unknown tag decl kind!");
abort();
}
// Refine our Opaque type to ResultType. This can invalidate ResultType, so