Issue 151080
Summary [AVR] Induction variable not found (missed optimization)
Labels new issue
Assignees
Reporter tomtor
    ```
void foo(int);
int ci[30];

void loopci()
{
  for (int i=0; i < sizeof(ci)/sizeof(ci[0]); i++)
 foo(ci[i]);
}
```

compiles to:

```
000000b4 <loopci>:
  b4:   ef 92 push    r14
  b6:   ff 92           push    r15
  b8:   0f 93 push    r16
  ba:   1f 93           push    r17
  bc:   00 e0 ldi     r16, 0x00       ; 0
  be:   10 e0           ldi     r17, 0x00 ; 0
  c0:   c8 01           movw    r24, r16
  c2:   7c 01           movw r14, r24
  c4:   c8 01           movw    r24, r16
  c6:   88 0f add     r24, r24
  c8:   99 1f           adc     r25, r25
  ca:   80 50 subi    r24, 0x00       ; 0
  cc:   98 4c           sbci    r25, 0xC8 ; 200
  ce:   fc 01           movw    r30, r24
  d0:   80 81 ld      r24, Z
  d2:   91 81           ldd     r25, Z+1        ; 0x01
  d4: 1a d0           rcall   .+52            ; 0x10a <foo>
  d6:   c7 01 movw    r24, r14
  d8:   01 96           adiw    r24, 0x01       ; 1
 da:   0d 31           cpi     r16, 0x1D       ; 29
  dc:   11 05 cpc     r17, r1
  de:   8c 01           movw    r16, r24
  e0:   80 f3 brcs    .-32            ; 0xc2 <.Lname26+0x3>
  e2:   1f 91 pop     r17
  e4:   0f 91           pop     r16
  e6:   ff 90           pop r15
  e8:   ef 90           pop     r14
  ea:   08 95 ret
```

avr-gcc:

```
000000b4 <loopci>:
  b4:   cf 93           push r28
  b6:   df 93           push    r29
  b8:   ca e1           ldi r28, 0x1A       ; 26
  ba:   d8 e3           ldi     r29, 0x38       ; 56

000000bc <.L2>:
  bc:   89 91           ld      r24, Y+
  be:   99 91 ld      r25, Y+
  c0:   20 d0           rcall   .+64            ; 0x102 <foo>
  c2:   88 e3           ldi     r24, 0x38       ; 56
  c4:   c6 35           cpi     r28, 0x56       ; 86
  c6:   d8 07           cpc r29, r24
  c8:   c9 f7           brne    .-14            ; 0xbc <.L2>
  ca: df 91           pop     r29
  cc:   cf 91           pop     r28
  ce: 08 95           ret
```

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

Reply via email to