Re: optimization/10877: [3.3/3.4 regression] miscompilation with -O3 -fPIC on x86

Andrew Pinski <[email protected]>
Newsgroups gmane.comp.gcc.bugs,gmane.comp.gcc.prs
Message-ID <[email protected]>
It does not fail for me though on i686-pc-linux-gnu with GCC: 3.4  
20030517 (experimental).
Or on i686-unkown-openbsd3.1 with gcc version 3.4 20030519  
(experimental).

tin:~/src/gnu/gcc>g++ -O3 -fPIC ../gcctest/testpic.cc
tin:~/src/gnu/gcc>./a.out
tin:~/src/gnu/gcc>more ../gcctest/testpic.cc
     int* i;

     int& get_x() {
       return *i;
     }

     int main() {
       int j;
       i = &j;
       get_x();
     }

Thanks,
Andrew Pinski

PS here is the asm from a working version:

         .file   "testpic.cc"
.globl i
         .bss
         .align 4
         .type   i, @object
         .size   i, 4
i:
         .zero   4
         .text
         .align 2
         .p2align 4,,15
.globl _Z5get_xv
         .type   _Z5get_xv, @function
_Z5get_xv:
.LFB4:
         call    __i686.get_pc_thunk.ax
         addl    $_GLOBAL_OFFSET_TABLE_, %eax
         pushl   %ebp
.LCFI0:
         movl    i@GOT(%eax), %edx
         movl    %esp, %ebp
.LCFI1:
         popl    %ebp
         movl    (%edx), %eax
         ret
.LFE4:
         .size   _Z5get_xv, .-_Z5get_xv
         .align 2
         .p2align 4,,15
.globl main
         .type   main, @function
main:
.LFB5:
         pushl   %ebp
.LCFI2:
         movl    %esp, %ebp
.LCFI3:
         leal    -8(%ebp), %eax
         pushl   %ebx
.LCFI4:
         subl    $4, %esp
.LCFI5:
         andl    $-16, %esp
         call    __i686.get_pc_thunk.bx
         addl    $_GLOBAL_OFFSET_TABLE_, %ebx
         movl    i@GOT(%ebx), %ecx
         movl    %eax, (%ecx)
         call    _Z5get_xv@PLT
         movl    -4(%ebp), %ebx
         xorl    %eax, %eax
         leave
         ret
.LFE5:
         .size   main, .-main
         .section         
.gnu.linkonce.t.__i686.get_pc_thunk.ax,"ax",@progbits
.globl __i686.get_pc_thunk.ax
         .hidden __i686.get_pc_thunk.ax
         .type   __i686.get_pc_thunk.ax, @function
__i686.get_pc_thunk.ax:
         movl    (%esp), %eax
         ret
         .section         
.gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
.globl __i686.get_pc_thunk.bx
         .hidden __i686.get_pc_thunk.bx
         .type   __i686.get_pc_thunk.bx, @function
__i686.get_pc_thunk.bx:
         movl    (%esp), %ebx
         ret
         .ident  "GCC: (GNU) 3.4 20030517 (experimental)"


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
trail&database=gcc&pr=10877
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.