Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
抽象解释分析的过程中,如果某个函数有一些很深的函数调用,结尾的时候callee saved registers有时不能正常恢复(好像是因为栈上存的栈指针会乱掉,而栈结尾恢复callee saved registers的时候用的是这个栈上存的栈指针)。如果在抽象解释,函数调用返回的时候,直接保留callee saved registers能够有效地提升分析精度。
我在ARM系列架构上发现的这个问题,因此目前支持了保留ARM和AArch64的调用约定的callee saved registers。而且ARM系列的调用约定AAPCS比较统一。X86暂未在这次PR实现支持,而且X86的调用约定好像没那么统一。