[PATCH] D121929: [AArch64] Mark all instructions that read/write FPCR as doing so

Simon Tatham via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 18 03:28:01 PDT 2022


simon_tatham added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:2225
     return false;
-  if (Reg2 == Reg1 + 1)
+  if (Reg2 == Reg1 + 1 || (Reg1 == AArch64::FP && Reg2 == AArch64::LR))
     return false;
----------------
I don't know this code well, but just looking at this if statement in isolation, in the case where `Reg1==FP`, the previous version of the condition would have required `Reg2==LR`, whereas this one will accept either `Reg2==LR` //or// `Reg2=FPCR`.

Or is there some condition at the call sites which means nothing but GPRs will ever be passed to this function in the first place, so that the (FP,FPCR) pair will never trigger that false positive?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D121929



More information about the llvm-commits mailing list