mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Use ISD::ADD instead of ISD::SUB with a negated constant. This
avoids trouble if the return type of TD->getPointerSize() is changed to something which doesn't promote to a signed type, and is simpler anyway. Also, use getCopyFromReg instead of getRegister to read a physical register's value. llvm-svn: 110835
This commit is contained in:
parent
fa19084e79
commit
d91d51116b
@ -7210,12 +7210,13 @@ SDValue X86TargetLowering::LowerEH_RETURN(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue Handler = Op.getOperand(2);
|
||||
DebugLoc dl = Op.getDebugLoc();
|
||||
|
||||
SDValue Frame = DAG.getRegister(Subtarget->is64Bit() ? X86::RBP : X86::EBP,
|
||||
getPointerTy());
|
||||
SDValue Frame = DAG.getCopyFromReg(DAG.getEntryNode(), dl,
|
||||
Subtarget->is64Bit() ? X86::RBP : X86::EBP,
|
||||
getPointerTy());
|
||||
unsigned StoreAddrReg = (Subtarget->is64Bit() ? X86::RCX : X86::ECX);
|
||||
|
||||
SDValue StoreAddr = DAG.getNode(ISD::SUB, dl, getPointerTy(), Frame,
|
||||
DAG.getIntPtrConstant(-TD->getPointerSize()));
|
||||
SDValue StoreAddr = DAG.getNode(ISD::ADD, dl, getPointerTy(), Frame,
|
||||
DAG.getIntPtrConstant(TD->getPointerSize()));
|
||||
StoreAddr = DAG.getNode(ISD::ADD, dl, getPointerTy(), StoreAddr, Offset);
|
||||
Chain = DAG.getStore(Chain, dl, Handler, StoreAddr, NULL, 0, false, false, 0);
|
||||
Chain = DAG.getCopyToReg(Chain, dl, StoreAddrReg, StoreAddr);
|
||||
|
Loading…
Reference in New Issue
Block a user