kito-cheng added a comment.

Sorry for cross post, but I guess some people might not follow closely in 
discourse (like me :P):

Another proposal from me is using gp as platform register: 
https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/371

Some advantage on taking gp as platform register rather than other GPRs:

- Compiler doesn’t use gp register anywhere for now.
- All assembly files (which conform with current ABI) didn’t use that except 
the __global_pointer$ initialization code in CRT files.
- The main user is linker, linker will use that to perform linker relaxation, 
and we already have the command option to tune that off.

Potential issues:

- Loss the code size and performance gain from gp relaxation
  - The most gain from gp relaxation is embedded application, it’s different 
target audience as SCS, so this should not blocker issues.
  - Android is an example, it’s already disable GP relaxation at all, so we 
don’t have any loss for this case.
- Will it break any existing platform?
  - Treat gp as platform register is optional, it’s still default use as gp 
relaxation, so NO breakage on existing platform, but give the freedom of the 
platform to use gp register as other purpose if they don’t want gp relxation.
  - Added an attribute to let linker to help mixing up different gp usage 
objects, also linker could check that attribute to make sure gp relaxation is 
do-able or not.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D146463

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

Reply via email to