forked from OSchip/llvm-project
Change the way clang generates union types a bit so it plays well
with the LLVM C backend. llvm-svn: 65615
This commit is contained in:
parent
8d03f59479
commit
8f5f4ea466
|
@ -555,6 +555,11 @@ void RecordOrganizer::layoutUnionFields(const ASTRecordLayout &RL) {
|
|||
// of the result doesn't matter because anyone allocating
|
||||
// structures should be aligning them appropriately anyway.
|
||||
// FIXME: We can be a bit more intuitive in a lot of cases.
|
||||
STy = llvm::ArrayType::get(llvm::Type::Int8Ty, RL.getSize() / 8);
|
||||
// FIXME: Make this a struct type to work around PR2399; the
|
||||
// C backend doesn't like structs using array types.
|
||||
std::vector<const llvm::Type*> LLVMFields;
|
||||
LLVMFields.push_back(llvm::ArrayType::get(llvm::Type::Int8Ty,
|
||||
RL.getSize() / 8));
|
||||
STy = llvm::StructType::get(LLVMFields, true);
|
||||
assert(CGT.getTargetData().getTypePaddedSizeInBits(STy) == RL.getSize());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue