Avoid duplicating logic on frame register selecting when lowering frameaddr
authorMichael Liao <michael.liao@intel.com>
Thu, 2 May 2013 08:21:56 +0000 (08:21 +0000)
committerMichael Liao <michael.liao@intel.com>
Thu, 2 May 2013 08:21:56 +0000 (08:21 +0000)
No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180912 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index b7ba0b81886231950dd68a985fb2416e839f47d6..545405e9ab55fdc471d3b153821ed46fe5b720f2 100644 (file)
@@ -11030,7 +11030,9 @@ SDValue X86TargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
   EVT VT = Op.getValueType();
   DebugLoc dl = Op.getDebugLoc();  // FIXME probably not meaningful
   unsigned Depth = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue();
-  unsigned FrameReg = Subtarget->is64Bit() ? X86::RBP : X86::EBP;
+  unsigned FrameReg = RegInfo->getFrameRegister(DAG.getMachineFunction());
+  assert(((FrameReg == X86::RBP && VT == MVT::i64) ||
+          (FrameReg == X86::EBP && VT == MVT::i32)) && "Invalid Frame Register!");
   SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl, FrameReg, VT);
   while (Depth--)
     FrameAddr = DAG.getLoad(VT, dl, DAG.getEntryNode(), FrameAddr,