This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/37296] [4.4 Regression] Bootstrap failure compiling libgcc
- From: "vmakarov at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Sep 2008 17:29:10 -0000
- Subject: [Bug rtl-optimization/37296] [4.4 Regression] Bootstrap failure compiling libgcc
- References: <bug-37296-10110@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #18 from vmakarov at redhat dot com 2008-09-02 17:29 -------
I've looked at the cgraphbuild.i code and I think something is wrong with
inlining. There are two paths achieving L21 with different stack adjustments.
Here is the code. I marked insns adjusting SP by -> and the two insns should
refer to the same location by !
.globl rebuild_cgraph_edges
.type rebuild_cgraph_edges, @function
rebuild_cgraph_edges:
pushl %ebp
pushl %edi
pushl %esi
pushl %ebx
subl $56, %esp
movl current_function_decl, %edx
pushl %edx
call cgraph_node
! movl %eax, 32(%esp)
movl %eax, (%esp)
call cgraph_node_remove_callees
movl cfun, %eax
movl 4(%eax), %ecx
movl 32(%esp), %edi
--> addl $16, %esp
movl (%ecx), %edx
movl 36(%edx), %ebx
movl 40(%edx), %esi
movl %esi, 100(%edi)
movl %ebx, 96(%edi)
movl 28(%edx), %edi
cmpl 4(%ecx), %edi
je .L21
...
.L31:
movl 28(%eax), %edx
movl %edx, 12(%esp)
cmpw $29, (%edx)
jne .L50
cmpl $9, tree_code_type+480
je .L51
movl 28(%esp), %edx
testl %edx, %edx
jle .L52
movl 48(%edi), %eax
movl %eax, 8(%esp)
---> subl $12, %esp
pushl %edi
call compute_call_stmt_bb_frequency
movl %eax, %ebp
popl %eax
movl 36(%edi), %edx
movl 40(%edi), %ecx
movl 24(%esp), %eax
pushl %eax
movl %edx, 20(%esp)
movl %ecx, 16(%esp)
call cgraph_node
---> addl $12, %esp
movl 12(%esp), %edx
pushl %edx
pushl %ebp
movl 16(%esp), %edx
movl 12(%esp), %ecx
pushl %ecx
pushl %edx
pushl %esi
pushl %eax
movl 44(%esp), %ebp
pushl %ebp
call cgraph_create_edge
movl 8(%ebx), %ebx
--> addl $32, %esp
testl %ebx, %ebx
jne .L42
.p2align 4,,7
.p2align 3
.L45:
movl cfun, %eax
.L22:
movl 4(%eax), %edx
movl 28(%edi), %edi
cmpl %edi, 4(%edx)
jne .L41
.L21:
! movl 48(%esp), %eax
call initialize_inline_failed
...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37296