[Bug c/70223] New: [ARM] Optimization level -O2 results in wrong code

satishbmsce at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 14 10:17:00 GMT 2016


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

            Bug ID: 70223
           Summary: [ARM] Optimization level -O2 results in wrong code
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: satishbmsce at gmail dot com
  Target Milestone: ---

-fschedule-insns2 flag within optimization level -O2 results in wrong code. By
adding one more argument to test function 'doStreamReadBlock' defined in file
'gcc/testsuite/gcc.target/arm/stack-red-zone.c' issue can produced. 

/x86_64-unknown-linux-gnu/bin/gcc -B /x86_64-unknown-linux-gnu/bin -msoft-float
-marm -mcpu=cortex-a9 -march=armv7-a -mno-thumb-interwork -mlong-calls
-mno-unaligned-access -O2 test.c

test.c: 
extern int doStreamReadBlock (int *, char *, int size, int, int);

char readStream (int *s)
{
       char c = 0;
       doStreamReadBlock (s, &c, 1, *s, 22);
       return c;
}

00000000 <readStream>:
   0:   e1a0c00d        mov     ip, sp
   4:   e3a02000        mov     r2, #0
   8:   e92dd800        push    {fp, ip, lr, pc}
   c:   e24cb004        sub     fp, ip, #4
  10:   e24dd008        sub     sp, sp, #8
  14:   e24b100c        sub     r1, fp, #12
  18:   e3a0c016        mov     ip, #22
  1c:   e5612001        strb    r2, [r1, #-1]!
  20:   e3a02001        mov     r2, #1
  24:   e5903000        ldr     r3, [r0]
  28:   e58dc000        str     ip, [sp]
  2c:   e59fc00c        ldr     ip, [pc, #12]   ; 40 <readStream+0x40>
  30:   e12fff3c        blx     ip
  34:   e24bd00c        sub     sp, fp, #12        <---- Stack frame
de-allocated
  38:   e55b000d        ldrb    r0, [fp, #-13]     <---- Accessing stack.
  3c:   e89da800        ldm     sp, {fp, sp, pc}
  40:   00000000        andeq   r0, r0, r0


More information about the Gcc-bugs mailing list