Exit unwinding early when at the top of the stack and additional info won't be found.
Summary: This patch follows libgcc's lead: When the return-address register is zero, there won't be additional stack frames to examine, or gather information about. Exit before spending time looking for something known not to be found. Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77099
This commit is contained in:
parent
f4448063cc
commit
71fbd6e406
|
@ -1848,6 +1848,12 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|||
pc &= (pint_t)~0x1;
|
||||
#endif
|
||||
|
||||
// Exit early if at the top of the stack.
|
||||
if (pc == 0) {
|
||||
_unwindInfoMissing = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// If the last line of a function is a "throw" the compiler sometimes
|
||||
// emits no instructions after the call to __cxa_throw. This means
|
||||
// the return address is actually the start of the next function.
|
||||
|
|
Loading…
Reference in New Issue