diff options
Diffstat (limited to 'lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 70 |
1 files changed, 31 insertions, 39 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 16c1272..2f66ee6 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -598,8 +598,7 @@ SDOperand X86TargetLowering::LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG) { case MVT::f32: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 4; break; } @@ -607,8 +606,7 @@ SDOperand X86TargetLowering::LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG) { case MVT::f64: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 8; break; } @@ -626,8 +624,7 @@ SDOperand X86TargetLowering::LowerCCCCallTo(SDOperand Op, SelectionDAG &DAG) { ArgOffset = ((ArgOffset + 15) / 16) * 16; SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 16; } } @@ -988,8 +985,7 @@ X86TargetLowering::LowerX86_64CCCArguments(SDOperand Op, SelectionDAG &DAG) { unsigned VReg = AddLiveIn(MF, GPR64ArgRegs[NumIntRegs], X86::GR64RegisterClass); SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::i64); - SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, - DAG.getSrcValue(NULL)); + SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getConstant(8, getPointerTy())); @@ -1002,8 +998,7 @@ X86TargetLowering::LowerX86_64CCCArguments(SDOperand Op, SelectionDAG &DAG) { unsigned VReg = AddLiveIn(MF, XMMArgRegs[NumXMMRegs], X86::VR128RegisterClass); SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::v4f32); - SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, - DAG.getSrcValue(NULL)); + SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getConstant(16, getPointerTy())); @@ -1126,8 +1121,7 @@ X86TargetLowering::LowerX86_64CCCCallTo(SDOperand Op, SelectionDAG &DAG) { } else { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 8; } break; @@ -1149,8 +1143,7 @@ X86TargetLowering::LowerX86_64CCCCallTo(SDOperand Op, SelectionDAG &DAG) { } SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); if (ArgVT == MVT::f32 || ArgVT == MVT::f64) ArgOffset += 8; else @@ -1631,16 +1624,14 @@ SDOperand X86TargetLowering::LowerFastCCCallTo(SDOperand Op, SelectionDAG &DAG, case MVT::f32: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 4; break; } case MVT::f64: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 8; break; } @@ -1661,8 +1652,7 @@ SDOperand X86TargetLowering::LowerFastCCCallTo(SDOperand Op, SelectionDAG &DAG, ArgOffset = ((ArgOffset + 15) / 16) * 16; SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 16; } } @@ -1961,8 +1951,7 @@ SDOperand X86TargetLowering::LowerStdCallCCCallTo(SDOperand Op, case MVT::f32: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 4; break; } @@ -1970,8 +1959,7 @@ SDOperand X86TargetLowering::LowerStdCallCCCallTo(SDOperand Op, case MVT::f64: { SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); - MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, - DAG.getSrcValue(NULL))); + MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0)); ArgOffset += 8; break; } @@ -3989,7 +3977,7 @@ SDOperand X86TargetLowering::LowerSINT_TO_FP(SDOperand Op, SelectionDAG &DAG) { int SSFI = MF.getFrameInfo()->CreateStackObject(Size, Size); SDOperand StackSlot = DAG.getFrameIndex(SSFI, getPointerTy()); SDOperand Chain = DAG.getStore(DAG.getEntryNode(), Op.getOperand(0), - StackSlot, DAG.getSrcValue(NULL)); + StackSlot, NULL, 0); // Build the FILD std::vector<MVT::ValueType> Tys; @@ -4050,7 +4038,7 @@ SDOperand X86TargetLowering::LowerFP_TO_SINT(SDOperand Op, SelectionDAG &DAG) { SDOperand Value = Op.getOperand(0); if (X86ScalarSSE) { assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!"); - Chain = DAG.getStore(Chain, Value, StackSlot, DAG.getSrcValue(0)); + Chain = DAG.getStore(Chain, Value, StackSlot, NULL, 0); std::vector<MVT::ValueType> Tys; Tys.push_back(MVT::f64); Tys.push_back(MVT::Other); @@ -4366,8 +4354,7 @@ SDOperand X86TargetLowering::LowerRET(SDOperand Op, SelectionDAG &DAG) { MachineFunction &MF = DAG.getMachineFunction(); int SSFI = MF.getFrameInfo()->CreateStackObject(Size, Size); MemLoc = DAG.getFrameIndex(SSFI, getPointerTy()); - Chain = DAG.getStore(Op.getOperand(0), Value, MemLoc, - DAG.getSrcValue(0)); + Chain = DAG.getStore(Op.getOperand(0), Value, MemLoc, NULL, 0); } std::vector<MVT::ValueType> Tys; Tys.push_back(MVT::f64); @@ -4570,7 +4557,7 @@ SDOperand X86TargetLowering::LowerMEMSET(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, AddrVT, DstAddr, DAG.getConstant(Offset, AddrVT)), - DAG.getSrcValue(NULL)); + NULL, 0); BytesLeft -= 4; Offset += 4; } @@ -4579,7 +4566,7 @@ SDOperand X86TargetLowering::LowerMEMSET(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, AddrVT, DstAddr, DAG.getConstant(Offset, AddrVT)), - DAG.getSrcValue(NULL)); + NULL, 0); BytesLeft -= 2; Offset += 2; } @@ -4588,7 +4575,7 @@ SDOperand X86TargetLowering::LowerMEMSET(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, AddrVT, DstAddr, DAG.getConstant(Offset, AddrVT)), - DAG.getSrcValue(NULL)); + NULL, 0); } } @@ -4705,7 +4692,7 @@ SDOperand X86TargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, DstVT, DstAddr, DAG.getConstant(Offset, DstVT)), - DAG.getSrcValue(NULL)); + NULL, 0); BytesLeft -= 4; Offset += 4; } @@ -4718,7 +4705,7 @@ SDOperand X86TargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, DstVT, DstAddr, DAG.getConstant(Offset, DstVT)), - DAG.getSrcValue(NULL)); + NULL, 0); BytesLeft -= 2; Offset += 2; } @@ -4732,7 +4719,7 @@ SDOperand X86TargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { Chain = DAG.getStore(Chain, Value, DAG.getNode(ISD::ADD, DstVT, DstAddr, DAG.getConstant(Offset, DstVT)), - DAG.getSrcValue(NULL)); + NULL, 0); } } @@ -4758,11 +4745,14 @@ X86TargetLowering::LowerREADCYCLCECOUNTER(SDOperand Op, SelectionDAG &DAG) { } SDOperand X86TargetLowering::LowerVASTART(SDOperand Op, SelectionDAG &DAG) { + SrcValueSDNode *SV = cast<SrcValueSDNode>(Op.getOperand(2)); + if (!Subtarget->is64Bit()) { // vastart just stores the address of the VarArgsFrameIndex slot into the // memory location argument. SDOperand FR = DAG.getFrameIndex(VarArgsFrameIndex, getPointerTy()); - return DAG.getStore(Op.getOperand(0), FR,Op.getOperand(1),Op.getOperand(2)); + return DAG.getStore(Op.getOperand(0), FR,Op.getOperand(1), SV->getValue(), + SV->getOffset()); } // __va_list_tag: @@ -4775,7 +4765,7 @@ SDOperand X86TargetLowering::LowerVASTART(SDOperand Op, SelectionDAG &DAG) { // Store gp_offset SDOperand Store = DAG.getStore(Op.getOperand(0), DAG.getConstant(VarArgsGPOffset, MVT::i32), - FIN, Op.getOperand(2)); + FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store fp_offset @@ -4783,21 +4773,23 @@ SDOperand X86TargetLowering::LowerVASTART(SDOperand Op, SelectionDAG &DAG) { DAG.getConstant(4, getPointerTy())); Store = DAG.getStore(Op.getOperand(0), DAG.getConstant(VarArgsFPOffset, MVT::i32), - FIN, Op.getOperand(2)); + FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store ptr to overflow_arg_area FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getConstant(4, getPointerTy())); SDOperand OVFIN = DAG.getFrameIndex(VarArgsFrameIndex, getPointerTy()); - Store = DAG.getStore(Op.getOperand(0), OVFIN, FIN, Op.getOperand(2)); + Store = DAG.getStore(Op.getOperand(0), OVFIN, FIN, SV->getValue(), + SV->getOffset()); MemOps.push_back(Store); // Store ptr to reg_save_area. FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getConstant(8, getPointerTy())); SDOperand RSFIN = DAG.getFrameIndex(RegSaveFrameIndex, getPointerTy()); - Store = DAG.getStore(Op.getOperand(0), RSFIN, FIN, Op.getOperand(2)); + Store = DAG.getStore(Op.getOperand(0), RSFIN, FIN, SV->getValue(), + SV->getOffset()); MemOps.push_back(Store); return DAG.getNode(ISD::TokenFactor, MVT::Other, &MemOps[0], MemOps.size()); } |