diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-29 17:36:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-29 17:36:02 +0000 |
commit | d7ba0f2ade9374adbfa7ce62de5d4982e6e10d9c (patch) | |
tree | d3f4c55571ca1cdf3021b5fc05f93ea27f47881e | |
parent | 553881bddcdeb66c0ae06bf9f62ca63b9f29b2e8 (diff) | |
download | external_llvm-d7ba0f2ade9374adbfa7ce62de5d4982e6e10d9c.tar.gz external_llvm-d7ba0f2ade9374adbfa7ce62de5d4982e6e10d9c.tar.bz2 external_llvm-d7ba0f2ade9374adbfa7ce62de5d4982e6e10d9c.zip |
add support for zero initialized unions, patch by Tim Northover!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99818 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/VMCore/Constants.cpp | 4 | ||||
-rw-r--r-- | test/Feature/unions.ll | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index c9c98577eb..bd088802cb 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -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; diff --git a/test/Feature/unions.ll b/test/Feature/unions.ll index 9d6c36bb3c..3cf8c3ce0e 100644 --- a/test/Feature/unions.ll +++ b/test/Feature/unions.ll @@ -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 } + |