https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80134

            Bug ID: 80134
           Summary: powerpc: loop on p[i] and *p++ should give the same
                    code
           Product: gcc
           Version: 5.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: christophe.le...@c-s.fr
  Target Milestone: ---

The below code should give the same code, shouldn't depend on whether we use
p[i] or *p++
void memset32a(int *p, int v, unsigned int c)
{
        int i;

        for (i = 0; i < c; i++)
                p[i] = v;
}

void memset32b(int *p, int v, unsigned int c)
{
        int i;

        for (i = 0; i < c; i++)
                *p++ = v;
}


test4.o:     file format elf32-powerpc


Disassembly of section .text:

00000000 <memset32a>:
   0:   2c 05 00 00     cmpwi   r5,0
   4:   4d 82 00 20     beqlr   
   8:   54 a9 10 3a     rlwinm  r9,r5,2,0,29
   c:   39 29 ff fc     addi    r9,r9,-4
  10:   55 29 f0 be     rlwinm  r9,r9,30,2,31
  14:   39 29 00 01     addi    r9,r9,1
  18:   7d 29 03 a6     mtctr   r9
  1c:   38 63 ff fc     addi    r3,r3,-4
  20:   94 83 00 04     stwu    r4,4(r3)
  24:   42 00 ff fc     bdnz    20 <memset32a+0x20>
  28:   4e 80 00 20     blr

0000002c <memset32b>:
  2c:   2c 05 00 00     cmpwi   r5,0
  30:   38 63 ff fc     addi    r3,r3,-4
  34:   4d 82 00 20     beqlr   
  38:   7c a9 03 a6     mtctr   r5
  3c:   94 83 00 04     stwu    r4,4(r3)
  40:   42 00 ff fc     bdnz    3c <memset32b+0x10>
  44:   4e 80 00 20     blr

Reply via email to