If we want to take shrink-wrapping to the next level, we will shrink-wrap the return address register, and realize that on some paths we don't actually need to save it.
In this case, libunwind fails to set IP to the return address, since there are no CFI directives on how to get its value in that IP range.
The following fix gets the return address from the current return address register, and if there are CFI directives for it, it will be overriden.
Not sure how libunwind is tested (it has only 4 tests in the test directory). Probably the test case can be reduced or dropped since it comes from the llvm test-suite.