From: Jim Grosbach Date: Wed, 10 Mar 2010 19:59:47 +0000 (+0000) Subject: comment why we use custom epilogue for t1 functions using vaargs. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=004453e85e72a2a2ea9a70fc6b7b368feb877c4c;p=oota-llvm.git comment why we use custom epilogue for t1 functions using vaargs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98182 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/Thumb1RegisterInfo.cpp b/lib/Target/ARM/Thumb1RegisterInfo.cpp index 6215d2fa82c..49fd3fa05be 100644 --- a/lib/Target/ARM/Thumb1RegisterInfo.cpp +++ b/lib/Target/ARM/Thumb1RegisterInfo.cpp @@ -854,6 +854,11 @@ void Thumb1RegisterInfo::emitEpilogue(MachineFunction &MF, } if (VARegSaveSize) { + // Unlike T2 and ARM mode, the T1 pop instruction cannot restore + // to LR, and we can't pop the value directly to the PC since + // we need to update the SP after popping the value. Therefore, we + // pop the old LR into R3 as a temporary. + // Move back past the callee-saved register restoration while (MBBI != MBB.end() && isCSRestore(MBBI, CSRegs)) ++MBBI;