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

Andrew Pinski <[email protected]>
Newsgroups gmane.comp.gcc.prs
Message-ID <[email protected]>
The following reply was made to PR optimization/10877; it has been noted by GNATS.

From: Andrew Pinski <[email protected]>
To: [email protected], [email protected], [email protected],
   [email protected], [email protected], [email protected]
Cc: Andrew Pinski <[email protected]>
Subject: Re: optimization/10877: [3.3/3.4 regression] miscompilation with -O3 -fPIC on x86
Date: Mon, 19 May 2003 21:58:26 -0400

 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.