HomePhabricator

[AVR] Fix private label prefix

Authored by aykevl on Feb 25 2020, 8:15 AM.

Description

[AVR] Fix private label prefix

This is a small pet peeve from me. This change makes sure the AVR backend uses
the correct private label prefix (.L) so that private labels are hidden in
avr-objdump.

Example code:

define i8 @foo(i1 %cond) {
  br i1 %cond, label %then, label %else
then:
  ret i8 3
else:
  ret i8 5
}

When compiling this:

llc -march=avr -filetype=obj -o test.o test.ll

and then dumping it:

avr-objdump -d test.o

You would previously get an ugly temporary label:

00000000 <foo>:
   0:        81 70       andi       r24, 0x01    ; 1
   2:        80 30       cpi        r24, 0x00    ; 0
   4:        f9 f3       breq       .-2          ; 0x4 <foo+0x4>
   6:        83 e0       ldi        r24, 0x03    ; 3
   8:        08 95       ret

0000000a <LBB0_2>:
   a:        85 e0       ldi        r24, 0x05    ; 5
   c:        08 95       ret

This patch fixes that, the output is now:

00000000 <foo>:
   0:        81 70       andi       r24, 0x01    ; 1
   2:        80 30       cpi        r24, 0x00    ; 0
   4:        01 f0       breq       .+0          ; 0x6 <foo+0x6>
   6:        83 e0       ldi        r24, 0x03    ; 3
   8:        08 95       ret
   a:        85 e0       ldi        r24, 0x05    ; 5
   c:        08 95       ret

Note that as you can see the breq operand is different. However it is
still the same after linking:

4:        11 f0       breq       .+4

Differential Revision: https://reviews.llvm.org/D75124

Details

Committed
aykevlFeb 26 2020, 11:32 AM
Differential Revision
D75124: [AVR] Fix private label prefix
Parents
rG165f707f9d0f: [AVR] Don't adjust addresses by 2 for absolute values
Branches
Unknown
Tags
Unknown