jcai19 marked 4 inline comments as done.
jcai19 added inline comments.

================
Comment at: llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:1927
+            .add(predOps(ARMCC::AL))
+            .addReg(ARM::LR);
+
----------------
efriedma wrote:
> I think you need to ensure that lr actually contains the correct value, 
> somehow.  Normally the call will come before anything that would clobber lr, 
> but you're not actually enforcing that anywhere: LR isn't listed as an input 
> to BL_PUSHLR.
> 
> To make this work correctly, I think the return address actually needs to be 
> an argument to the BL_PUSHLR instruction.  See 
> ARMTargetLowering::LowerRETURNADDR for how to make an appropriate copy.
My takeaway from your comment is to mark LR explicitly alive to make sure 
compiler will restore LR if it clobbers the register before the BL_PUSHLR 
instruction. Did I understand correctly? Thanks. Anyway, this change seems to 
be needed once I turned on -verify-machineinstrs in the unit test, which 
complained the push/stmdb instruction trying to use a dead LR register.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D65019



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

Reply via email to