[llvm-bugs] [Bug 52215] New: Missing register aliases for AVR for compatibility with gcc-avr's inline assembly

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Oct 19 06:15:18 PDT 2021


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: unassignedbugs at nondot.org
          Reporter: marian.buschsieweke at ovgu.de
                CC: llvm-bugs at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20211019/6277b684/attachment.html>


More information about the llvm-bugs mailing list