efriedma accepted this revision.
efriedma added a comment.

LGTM with one minor comment



================
Comment at: llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp:5607
+  // * Register R12(IP),
+  // * Condition codes (and thus the CPSR register)
+  //
----------------
yroux wrote:
> efriedma wrote:
> > If you control all the instructions that execute, you don't need to worry 
> > about what the procedure call standard says.  You do need to worry about 
> > linker veneers if the outlined function is in a different section, though.
> > 
> > So you need to worry about `R12`/`CPSR` on entry to the outlined function, 
> > but not on exit from the outlined function.
> Yes I agree and it is what is done here, I put the same comment as what was 
> done on AArch64 to explain where it comes from, but as it is mentioned below 
> we remove the candidate when these registers are live into or across, which 
> means that we can outline cases where def and use are inside the outlined 
> region or the def inside and the use after the exit as you said.
> 
> I've modify the machine-outliner-unsafe-registers.mir test in the update 
> version I'll submit to exhibit this.
Pleas clarify the comment to explain why the procedure call standard is 
relevant.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76066/new/

https://reviews.llvm.org/D76066



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to