-
Notifications
You must be signed in to change notification settings - Fork 14
Frame pointer clobbered when restoring callee-saved registers #45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Got a fix for this locally but it breaks a bunch of tests (presumably because the call frame for all functions has now changed). |
Fixed in I will leave the bot red because the 'FP everywhere' thing is temporary and not worth updating dozens of tests for. Once we revert the 'fp everywhere' patch and come up with a better fix, I will have to go back and fix the tests broken by Cherry-picking the patches into our fork. |
By the way @gergoerdi, with the commits for this and #38, your interrupt test case (in #38) compiles fine and doesn't give any warnings from simavr. |
Cherry picked the fixes from llvm-mirror/llvm@b0cacfc in 577e28d. |
I reverted the 'FP everywhere' commit locally so that I could fix all of the tests that I've pushing up another fix, and now the test suite (while still red) is only red because of #38. |
The fix (llvm-mirror/llvm@8c15c7b) is now in |
Discovered while working on #38.
I've found a problem which causes Y to be clobbered before function epilogue .
The function emission code looks something like this
It looks like Y is automatically restored before the epilogue is generated. The epilogue assumes that 'Y' still contains SP, but it in actual fact contains its original value at the time the function was called.
This should be an easy fix.
I've been using the same testcase as in #38, shown here
interrupt.ll
The text was updated successfully, but these errors were encountered: