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