improve support for uniontype and ConstantUnion, patch by Tim Northover!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98656 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2010-03-16 19:15:03 +00:00
parent eb2693ebc0
commit 8b3b34f410
5 changed files with 73 additions and 4 deletions

View File

@@ -2592,6 +2592,11 @@ void SelectionDAGBuilder::visitGetElementPtr(User &I) {
}
Ty = StTy->getElementType(Field);
} else if (const UnionType *UnTy = dyn_cast<UnionType>(Ty)) {
unsigned Field = cast<ConstantInt>(Idx)->getZExtValue();
// Offset canonically 0 for unions, but type changes
Ty = UnTy->getElementType(Field);
} else {
Ty = cast<SequentialType>(Ty)->getElementType();