diff options
author | Duncan Sands <baldrick@free.fr> | 2012-11-13 13:01:58 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2012-11-13 13:01:58 +0000 |
commit | b8d3caf65a7244c11b5ec2d41fa5033c3e319f55 (patch) | |
tree | 0e658d097f4e758fbb19c8c8ca686f633a071540 /llvm/lib/CodeGen | |
parent | db698d8a8a9507b2946eaa3af7fbe05f53f17412 (diff) | |
download | bcm5719-llvm-b8d3caf65a7244c11b5ec2d41fa5033c3e319f55.tar.gz bcm5719-llvm-b8d3caf65a7244c11b5ec2d41fa5033c3e319f55.zip |
Codegen support for arbitrary vector getelementptrs.
llvm-svn: 167830
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 3fbf7c2fe66..0af7b9aa3fc 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -3137,12 +3137,12 @@ void SelectionDAGBuilder::visitGetElementPtr(const User &I) { OI != E; ++OI) { const Value *Idx = *OI; if (StructType *StTy = dyn_cast<StructType>(Ty)) { - unsigned Field = cast<ConstantInt>(Idx)->getZExtValue(); + unsigned Field = cast<Constant>(Idx)->getUniqueInteger().getZExtValue(); if (Field) { // N = N + Offset uint64_t Offset = TD->getStructLayout(StTy)->getElementOffset(Field); N = DAG.getNode(ISD::ADD, getCurDebugLoc(), N.getValueType(), N, - DAG.getIntPtrConstant(Offset)); + DAG.getConstant(Offset, N.getValueType())); } Ty = StTy->getElementType(Field); @@ -3187,7 +3187,7 @@ void SelectionDAGBuilder::visitGetElementPtr(const User &I) { N.getValueType(), IdxN, DAG.getConstant(Amt, IdxN.getValueType())); } else { - SDValue Scale = DAG.getConstant(ElementSize, TLI.getPointerTy()); + SDValue Scale = DAG.getConstant(ElementSize, IdxN.getValueType()); IdxN = DAG.getNode(ISD::MUL, getCurDebugLoc(), N.getValueType(), IdxN, Scale); } |