------- Comment #52 from dominiq at lps dot ens dot fr  2008-01-22 23:25 -------
> You mean does not, right?

Yes indeed! sorry for skipping the negation. The assembly follows. Comparing it
to the assembly for wo_prof_mult_field_peeling_db.c in comment #35, the
striking difference is that the latter (working) call L_malloc$stub, while the
former call _malloc. I have very little knowledge about the $stub and friends
suffices, but if I remember correctly what I have read, the Darwin libraries
have both symbols, but one should use the "decorated" one(s). Also the stuff
following ".picsymbol_stub" in the working assembly is missing in the non
working assembly.

.text
.align 4,0x90
.globl _main
_main:
LFB5:
pushq   %rbp
LCFI0:
movl    $1600, %edi
movq    %rsp, %rbp
LCFI1:
call    _malloc
movl    $400, %edi
call    _malloc
movl    $400, %edi
call    _malloc
movl    $400, %edi
call    _malloc
movl    $400, %edi
call    _malloc
xorl    %edx, %edx
cltq
.align 4,0x90
L2:
movl    $5, (%rax,%rdx,4)
addq    $1, %rdx
cmpq    $100, %rdx
jne     L2
xorb    %dl, %dl
jmp     L4
.align 4,0x90
L3:
addq    $1, %rdx
cmpq    $100, %rdx
je      L9
L4:
cmpl    $5, (%rax,%rdx,4)
je      L3
call    _abort
L9:
xorl    %eax, %eax
leave
ret
LFE5:
.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
.set L$set$0,LECIE1-LSCIE1
.long L$set$0
LSCIE1:
.long   0x0
.byte   0x1
.ascii "zR\0"
.byte   0x1
.byte   0x78
.byte   0x10
.byte   0x1
.byte   0x10
.byte   0xc
.byte   0x7
.byte   0x8
.byte   0x90
.byte   0x1
.align 3
LECIE1:
.globl _main.eh
_main.eh:
LSFDE1:
.set L$set$1,LEFDE1-LASFDE1
.long L$set$1
LASFDE1:
.long   LASFDE1-EH_frame1
.quad   LFB5-.
.set L$set$2,LFE5-LFB5
.quad L$set$2
.byte   0x0
.byte   0x4
.set L$set$3,LCFI0-LFB5
.long L$set$3
.byte   0xe
.byte   0x10
.byte   0x86
.byte   0x2
.byte   0x4
.set L$set$4,LCFI1-LCFI0
.long L$set$4
.byte   0xd
.byte   0x6
.align 3
LEFDE1:
.subsections_via_symbols


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34483

Reply via email to