https://bugs.llvm.org/show_bug.cgi?id=52215
Bug ID: 52215
Summary: Missing register aliases for AVR for compatibility
with gcc-avr's inline assembly
Product: libraries
Version: 12.0
Hardware: Other
OS: other
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: AVR
Assignee: unassignedb...@nondot.org
Reporter: marian.buschsiew...@ovgu.de
CC: llvm-bugs@lists.llvm.org
E.g. the avr-libc but also other AVR code written for gcc-avr heavily uses the
following aliases:
__tmp_reg__
__SREG__
__zero_reg__
__SP_H__
__SP_L__
also the aliases __RAMPZ__ and __EIND__ are occasionally used.
See [1] for their definitions.
This is the first time I looked into the LLVM source code, so I might be
talking nonsense here. I tried to fix this by amending
lib/Target/AVR/AVRRegisterInfo.td like this:
-def R0 : AVRReg<0, "r0">, DwarfRegNum<[0]>;
-def R1 : AVRReg<1, "r1">, DwarfRegNum<[1]>;
+def R0 : AVRReg<0, "r0", [], ["__tmp_reg__"]>, DwarfRegNum<[0]>;
+def R1 : AVRReg<1, "r1", [], ["__zero_reg__"]>, DwarfRegNum<[1]>;
etc. - but to no avail.
I also tried to just emit assignments for the alias via `void
AVRAsmPrinter::emitStartOfAsmFile(Module &M)`, but this didn't work for me
either.
I think that adding the aliases should be relatively trivial for someone with
same basic understanding of the LLVM code - which I sadly lack.
Also note that according to [1] the AVRtiny family has a different mapping
(e.g. __tmp_reg__ usually is r0, but on AVRtiny it is r16).
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgcc/config/avr/lib1funcs.S;h=ac101b49f03e340e93e16283eb47146ef47290c2;hb=HEAD
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs