summaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/Thumb1RegisterInfo.cpp
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-03-10 19:59:47 +0000
committerJim Grosbach <grosbach@apple.com>2010-03-10 19:59:47 +0000
commit004453e85e72a2a2ea9a70fc6b7b368feb877c4c (patch)
treeaf392a15935a70052b3a42deb5397b77b7b23483 /lib/Target/ARM/Thumb1RegisterInfo.cpp
parent2cd9ffef6e74febd727f0b548c21ba3f4e5cd26f (diff)
downloadexternal_llvm-004453e85e72a2a2ea9a70fc6b7b368feb877c4c.zip
external_llvm-004453e85e72a2a2ea9a70fc6b7b368feb877c4c.tar.gz
external_llvm-004453e85e72a2a2ea9a70fc6b7b368feb877c4c.tar.bz2
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
Diffstat (limited to 'lib/Target/ARM/Thumb1RegisterInfo.cpp')
-rw-r--r--lib/Target/ARM/Thumb1RegisterInfo.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/ARM/Thumb1RegisterInfo.cpp b/lib/Target/ARM/Thumb1RegisterInfo.cpp
index 6215d2f..49fd3fa 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;