diff options
Diffstat (limited to 'lib/Target/X86/X86ISelPattern.cpp')
-rw-r--r-- | lib/Target/X86/X86ISelPattern.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Target/X86/X86ISelPattern.cpp b/lib/Target/X86/X86ISelPattern.cpp index ff0ee633ff..9f602418ab 100644 --- a/lib/Target/X86/X86ISelPattern.cpp +++ b/lib/Target/X86/X86ISelPattern.cpp @@ -2329,7 +2329,8 @@ unsigned ISel::SelectExpr(SDOperand N) { addFrameReference(BuildMI(BB, X86::LEA32r, 4, Result), (int)Tmp1); return Result; case ISD::ConstantPool: - Tmp1 = cast<ConstantPoolSDNode>(N)->getIndex(); + Tmp1 = BB->getParent()->getConstantPool()-> + getConstantPoolIndex(cast<ConstantPoolSDNode>(N)->get()); addConstantPoolReference(BuildMI(BB, X86::LEA32r, 4, Result), Tmp1); return Result; case ISD::ConstantFP: @@ -3317,8 +3318,10 @@ unsigned ISel::SelectExpr(SDOperand N) { } if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(N.getOperand(1))){ + unsigned CPIdx = BB->getParent()->getConstantPool()-> + getConstantPoolIndex(CP->get()); Select(N.getOperand(0)); - addConstantPoolReference(BuildMI(BB, Opc, 4, Result), CP->getIndex()); + addConstantPoolReference(BuildMI(BB, Opc, 4, Result), CPIdx); } else { X86AddressMode AM; @@ -3370,8 +3373,10 @@ unsigned ISel::SelectExpr(SDOperand N) { if (Node->getValueType(0) == MVT::f64) { assert(cast<VTSDNode>(Node->getOperand(3))->getVT() == MVT::f32 && "Bad EXTLOAD!"); - addConstantPoolReference(BuildMI(BB, X86::FLD32m, 4, Result), - CP->getIndex()); + unsigned CPIdx = BB->getParent()->getConstantPool()-> + getConstantPoolIndex(cast<ConstantPoolSDNode>(N)->get()); + + addConstantPoolReference(BuildMI(BB, X86::FLD32m, 4, Result), CPIdx); return Result; } |