diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-16 21:25:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-16 21:25:55 +0000 |
commit | 8fce3dddfa081fa27d9bf7609dc736f3deec2114 (patch) | |
tree | 1bfd105318167276b2d1a0feaea38cbbefedae7c /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 71ab18bdd5c63dae5732e06df51e09e4fee9d786 (diff) | |
download | bcm5719-llvm-8fce3dddfa081fa27d9bf7609dc736f3deec2114.tar.gz bcm5719-llvm-8fce3dddfa081fa27d9bf7609dc736f3deec2114.zip |
reapply r98656 unmodified, which exposed the asmprinter not
handling constant unions.
llvm-svn: 98680
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 3d9a4d523b6..11293e47f64 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -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(); |