This patch handles cases where we have to save/restore the link register into the stack and and load/store instruction which use the stack are part of the outlined region. It checks that there will be no overflow introduced by the new offset and fixup these instructions accordingly.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
Hi Yvan,
Sorry for the delay on this, it's taken some courage to look at this and I'm a bit confused to be honest! Can this be split into two patches..? One for enabling outlining of stack using instructions which don't need modifying and then another for handling the ones that need changing?
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
5883 | nit: Perform all the SPIdx check together? | |
6212 | There isn't this check in the first pass, so could we be missing some instructions here? |
Hi Sam,
I've split this patch into these two revisions:
https://reviews.llvm.org/D92933
https://reviews.llvm.org/D92934
Hope it will be more digest ;)
Thanks
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
5883 | I refactored this code in the new version | |
6212 | I don't think we miss anything, but this is indeed not needed, and I've removed it in the new version |
nit: Perform all the SPIdx check together?