jrtc27 added inline comments.

================
Comment at: llvm/test/CodeGen/RISCV/reserved-regs.ll:71
+
+; X1-NOT: lw ra,
+; X1-NOT: ld ra,
----------------
lenary wrote:
> These tests aren't going to test what you think they are, or at least aren't 
> going to fail when you hope they are, as the allocator will probably choose 
> a0 for these registers, even if other registers are available (it uses the 
> GPRs in a specific order, starting with the first free one, which will 
> usually be a0).
This is approximately what `llvm/test/CodeGen/AArch64/arm64-platform-reg.ll` is 
doing, and the pint is that `@var` is big enough that the register allocator 
will use every register it can so the order shouldn't matter.

As for reserving registers that have a specific use in the calling convention, 
AArch64 allows you to use them but won't let you make function calls 
(`llvm/test/CodeGen/AArch64/arm64-reserved-arg-reg-call-error.ll`). I don't 
know what it does about function arguments though, it probably assumes they're 
in the ABI registers on entry but then doesn't allocate/clobber those registers 
within the function? I'm not quite sure what that's useful for though. GCC has 
this to say about the flag:

> Treat the register named reg as a fixed register; generated code should never 
> refer to it (except perhaps as a stack pointer, frame pointer or in some 
> other fixed role).

So it's pretty vague about what can happen if you try and reserve a register 
normally used for other things...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D67185



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

Reply via email to