forked from OSchip/llvm-project
add support for zero initialized unions, patch by Tim Northover!
llvm-svn: 99818
This commit is contained in:
parent
5902e7bb22
commit
61f3bd6772
|
@ -59,6 +59,7 @@ Constant *Constant::getNullValue(const Type *Ty) {
|
|||
case Type::PointerTyID:
|
||||
return ConstantPointerNull::get(cast<PointerType>(Ty));
|
||||
case Type::StructTyID:
|
||||
case Type::UnionTyID:
|
||||
case Type::ArrayTyID:
|
||||
case Type::VectorTyID:
|
||||
return ConstantAggregateZero::get(Ty);
|
||||
|
@ -944,7 +945,8 @@ bool ConstantFP::isValueValidForType(const Type *Ty, const APFloat& Val) {
|
|||
// Factory Function Implementation
|
||||
|
||||
ConstantAggregateZero* ConstantAggregateZero::get(const Type* Ty) {
|
||||
assert((Ty->isStructTy() || Ty->isArrayTy() || Ty->isVectorTy()) &&
|
||||
assert((Ty->isStructTy() || Ty->isUnionTy()
|
||||
|| Ty->isArrayTy() || Ty->isVectorTy()) &&
|
||||
"Cannot create an aggregate zero of non-aggregate type!");
|
||||
|
||||
LLVMContextImpl *pImpl = Ty->getContext().pImpl;
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
|
||||
@union1 = constant union { i32, i8 } { i32 4 }
|
||||
@union2 = constant union { i32, i8 } insertvalue(union { i32, i8 } undef, i32 4, 0)
|
||||
@union3 = common global %union.anon zeroinitializer, align 8
|
||||
|
||||
define void @"Unions" () {
|
||||
ret void
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue