This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Here is the differences between -O2 (works ---) and -O3 (does not work +++):

--- testpic.O2.s Tue May 20 15:12:01 2003
+++ testpic.s Tue May 20 15:12:16 2003
@@ -12,13 +12,13 @@
.globl _Z5get_xv
.type _Z5get_xv, @function
_Z5get_xv:
- call __i686.get_pc_thunk.cx
- addl $_GLOBAL_OFFSET_TABLE_, %ecx
+ call __i686.get_pc_thunk.ax
+ addl $_GLOBAL_OFFSET_TABLE_, %eax
pushl %ebp
- movl i@GOT(%ecx), %eax
+ movl i@GOT(%eax), %edx
movl %esp, %ebp
popl %ebp
- movl (%eax), %eax
+ movl (%edx), %eax
ret
.size _Z5get_xv, .-_Z5get_xv
.align 2
@@ -28,26 +28,26 @@
main:
pushl %ebp
movl %esp, %ebp
- leal -8(%ebp), %edx
+ leal -8(%ebp), %eax
pushl %ebx
subl $4, %esp
andl $-16, %esp
call __i686.get_pc_thunk.bx
addl $_GLOBAL_OFFSET_TABLE_, %ebx
- movl i@GOT(%ebx), %eax
- movl %edx, (%eax)
+ movl i@GOT(%ebx), %ecx
+ movl %eax, (%ecx)
call _Z5get_xv@PLT
movl -4(%ebp), %ebx
xorl %eax, %eax
leave
ret
.size main, .-main
- .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
-.globl __i686.get_pc_thunk.cx
- .hidden __i686.get_pc_thunk.cx
- .type __i686.get_pc_thunk.cx, @function
-__i686.get_pc_thunk.cx:
- movl (%esp), %ecx
+ .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


looks like putting the pc_thunk into eax is the problem.

Thanks,
Andrew Pinski



On Tuesday, May 20, 2003, at 15:10 US/Eastern, Wolfgang Bangerth wrote:


I can reproduce it with `GNU assembler 2.11.93.0.2 20020207' tough so
it looks like it binutils fault but it has already been fixed.

So what do we do with this, then? Since we silently generate non-working
code, I'd prefer gcc work around the problem, but then I'm not in a
position to contribute anything reasonable to this aim...


W.

----------------------------------------------------------------------- --
Wolfgang Bangerth email: bangerth@ices.utexas.edu
www: http://www.ices.utexas.edu/~bangerth/







Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]