Daniël Mantione wrote:
Please use the command line option -sr to check the generated code before register allocation.
Done and attatched.
You can likely find the cause in there.
The code with imaginary registers looks correct to me. It seems to load each parameter into a seperate even numbered imaginary register (using odd numbered imaginary registers as temporaries in the process) allocating them as it goes. Then copies them to the locations needed for the function call deallocating them as it goes.

So it seems to me that the problem is in the translation of the form using imaginary registers to the form using real registers. Can you explain (or point me to documentation on) how this form is translated into a form using real registers. In particular what exactly happens when there are not enough real registers free to assign a real register for every imaginary register that is in use at a given time?

My current suspiscion is that something is missing regarding handling of running out of VFP registers and it hasn't been noticed before because noone has tried to do what i'm doing (implementing a calling convention using VFP registers and then stress testing it) but i've no idea where to look in the sourcecode to confirm/refute that idea.
        .file "testfp.dpr"
# Begin asmlist al_begin

.section .text.b_DEBUGSTART_$P$TESTFP
.globl  DEBUGSTART_$P$TESTFP
        .type   DEBUGSTART_$P$TESTFP,#object
DEBUGSTART_$P$TESTFP:
        .stabs "/testfp/",100,0,0,.Lf3
        .stabs "testfp.dpr",100,0,0,.Lf3
.Lf3:
# End asmlist al_begin
# Begin asmlist al_stabs

.section .data.n_TESTFP
.globl  DEBUGINFO_$P$TESTFP
        .type   DEBUGINFO_$P$TESTFP,#object
DEBUGINFO_$P$TESTFP:
# Defs - Begin unit SYSTEM has index 1
        .stabs "void:t2=2",128,0,0,0
        .stabs "LONGINT:t3=r3;-2147483648;2147483647;",128,0,0,0
        .stabs "DOUBLE:t1=r3;8;0;",128,0,0,0
# Defs - End unit SYSTEM has index 1
# Defs - Begin unit FPINTRES has index 2
# Defs - End unit FPINTRES has index 2
# Defs - Begin unit OBJPAS has index 3
# Defs - End unit OBJPAS has index 3
# Defs - Begin Staticsymtable
# Defs - End Staticsymtable
# Syms - Begin Staticsymtable
        .stabs "D:S1",40,0,6,U_$P$TESTFP_$$_D
# Syms - End Staticsymtable
# End asmlist al_stabs
# Begin asmlist al_procedures

.section .text.n_p$testfp_$$_g0
        .balign 4
.globl  P$TESTFP_$$_G0
        .type   P$TESTFP_$$_G0,#function
P$TESTFP_$$_G0:
        .stabs "G0:F2",36,0,7,P$TESTFP_$$_G0
# Temps allocated between r11-40 and r11-40
        # Register r13,r11,r12 allocated
        .stabs "testfp.dpr",132,0,0,.Lf1
.Lf1:
        .stabn 68,0,7,.Ll1 - P$TESTFP_$$_G0
.Ll1:
# [testfp.dpr]
# [7] procedure g0; begin
        mov     r12,r13
        stmfd   r13!,{r11,r12,r14,r15}
        sub     r11,r12,#4
        # Register r12,r12 released
        sub     r13,r13,#40
        # Register ireg16 allocated
        .stabn 68,0,8,.Ll2 - P$TESTFP_$$_G0
.Ll2:
# [8] d := zssssssssssssssdd(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
        ldr     ireg16,.Lj10
        # Register ireg16 released
        # Register mreg49fd allocated
        fldd    mreg49fd,[ireg16]
        # Register mreg49fd released
        # Register mreg48fd allocated
        fcpyd   mreg48fd,mreg49fd
        # Register ireg17 allocated
        ldr     ireg17,.Lj14
        # Register ireg17 released
        # Register mreg51fs allocated
        flds    mreg51fs,[ireg17]
        # Register mreg51fs released
        # Register mreg50fs allocated
        fcpys   mreg50fs,mreg51fs
        # Register ireg18 allocated
        ldr     ireg18,.Lj18
        # Register ireg18 released
        # Register mreg53fs allocated
        flds    mreg53fs,[ireg18]
        # Register mreg53fs released
        # Register mreg52fs allocated
        fcpys   mreg52fs,mreg53fs
        # Register ireg19 allocated
        ldr     ireg19,.Lj22
        # Register ireg19 released
        # Register mreg55fs allocated
        flds    mreg55fs,[ireg19]
        # Register mreg55fs released
        # Register mreg54fs allocated
        fcpys   mreg54fs,mreg55fs
        # Register ireg20 allocated
        ldr     ireg20,.Lj26
        # Register ireg20 released
        # Register mreg57fs allocated
        flds    mreg57fs,[ireg20]
        # Register mreg57fs released
        # Register mreg56fs allocated
        fcpys   mreg56fs,mreg57fs
        # Register ireg21 allocated
        ldr     ireg21,.Lj30
        # Register ireg21 released
        # Register mreg59fs allocated
        flds    mreg59fs,[ireg21]
        # Register mreg59fs released
        # Register mreg58fs allocated
        fcpys   mreg58fs,mreg59fs
        # Register ireg22 allocated
        ldr     ireg22,.Lj34
        # Register ireg22 released
        # Register mreg61fs allocated
        flds    mreg61fs,[ireg22]
        # Register mreg61fs released
        # Register mreg60fs allocated
        fcpys   mreg60fs,mreg61fs
        # Register ireg23 allocated
        ldr     ireg23,.Lj38
        # Register ireg23 released
        # Register mreg63fs allocated
        flds    mreg63fs,[ireg23]
        # Register mreg63fs released
        # Register mreg62fs allocated
        fcpys   mreg62fs,mreg63fs
        # Register ireg24 allocated
        ldr     ireg24,.Lj42
        # Register ireg24 released
        # Register mreg65fs allocated
        flds    mreg65fs,[ireg24]
        # Register mreg65fs released
        # Register mreg64fs allocated
        fcpys   mreg64fs,mreg65fs
        # Register ireg25 allocated
        ldr     ireg25,.Lj46
        # Register ireg25 released
        # Register mreg67fs allocated
        flds    mreg67fs,[ireg25]
        # Register mreg67fs released
        # Register mreg66fs allocated
        fcpys   mreg66fs,mreg67fs
        # Register ireg26 allocated
        ldr     ireg26,.Lj50
        # Register ireg26 released
        # Register mreg69fs allocated
        flds    mreg69fs,[ireg26]
        # Register mreg69fs released
        # Register mreg68fs allocated
        fcpys   mreg68fs,mreg69fs
        # Register ireg27 allocated
        ldr     ireg27,.Lj54
        # Register ireg27 released
        # Register mreg71fs allocated
        flds    mreg71fs,[ireg27]
        # Register mreg71fs released
        # Register mreg70fs allocated
        fcpys   mreg70fs,mreg71fs
        # Register ireg28 allocated
        ldr     ireg28,.Lj58
        # Register ireg28 released
        # Register mreg73fs allocated
        flds    mreg73fs,[ireg28]
        # Register mreg73fs released
        # Register mreg72fs allocated
        fcpys   mreg72fs,mreg73fs
        # Register ireg29 allocated
        ldr     ireg29,.Lj62
        # Register ireg29 released
        # Register mreg75fs allocated
        flds    mreg75fs,[ireg29]
        # Register mreg75fs released
        # Register mreg74fs allocated
        fcpys   mreg74fs,mreg75fs
        # Register ireg30 allocated
        ldr     ireg30,.Lj66
        # Register ireg30 released
        # Register mreg77fs allocated
        flds    mreg77fs,[ireg30]
        # Register mreg77fs released
        # Register mreg76fs allocated
        fcpys   mreg76fs,mreg77fs
        # Register mreg48fd released
        # Register d7 allocated
        fcpyd   d7,mreg48fd
        # Register mreg50fs released
        # Register s13 allocated
        fcpys   s13,mreg50fs
        # Register mreg52fs released
        # Register s12 allocated
        fcpys   s12,mreg52fs
        # Register mreg54fs released
        # Register s11 allocated
        fcpys   s11,mreg54fs
        # Register mreg56fs released
        # Register s10 allocated
        fcpys   s10,mreg56fs
        # Register mreg58fs released
        # Register s9 allocated
        fcpys   s9,mreg58fs
        # Register mreg60fs released
        # Register s8 allocated
        fcpys   s8,mreg60fs
        # Register mreg62fs released
        # Register s7 allocated
        fcpys   s7,mreg62fs
        # Register mreg64fs released
        # Register s6 allocated
        fcpys   s6,mreg64fs
        # Register mreg66fs released
        # Register s5 allocated
        fcpys   s5,mreg66fs
        # Register mreg68fs released
        # Register s4 allocated
        fcpys   s4,mreg68fs
        # Register mreg70fs released
        # Register s3 allocated
        fcpys   s3,mreg70fs
        # Register mreg72fs released
        # Register s2 allocated
        fcpys   s2,mreg72fs
        # Register mreg74fs released
        # Register s1 allocated
        fcpys   s1,mreg74fs
        # Register mreg76fs released
        # Register s0 allocated
        fcpys   s0,mreg76fs
        # Register d7,s13,s12,s11,s10,s9,s8,s7,s6,s5,s4,s3,s2,s1,s0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     zssssssssssssssdd
        # Register 
d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14,d0
 released
        # Register mreg78fd allocated
        fcpyd   mreg78fd,d0
        # Register ireg31 allocated
        ldr     ireg31,.Lj67
        # Register mreg78fd,ireg31 released
        fstd    mreg78fd,[ireg31]
        # Register ireg32 allocated
        .stabn 68,0,9,.Ll3 - P$TESTFP_$$_G0
.Ll3:
# [9] if d=120 then writeln('zssssssssssssssdd pass') else begin 
writeln('zssssssssssssssdd fail d=',d) ; {halt} end;
        ldr     ireg32,.Lj67
        # Register ireg32 released
        # Register mreg79fd allocated
        fldd    mreg79fd,[ireg32]
        # Register ireg33 allocated
        ldr     ireg33,.Lj72
        # Register ireg33 released
        # Register mreg80fd allocated
        fldd    mreg80fd,[ireg33]
        # Register mreg79fd,mreg80fd released
        fcmpd   mreg79fd,mreg80fd
        fmstat
        beq     .Lj68
        b       .Lj69
.Lj68:
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_get_output
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r1,r2,r3,r12,r13,r14,r0
 released
        # Register ireg35 allocated
        mov     ireg35,r0
        # Register ireg35 released
        # Register ireg34 allocated
        mov     ireg34,ireg35
        # Register ireg36 allocated
        mov     ireg36,ireg34
        # Register ireg38 allocated
        ldr     ireg38,.Lj79
        # Register ireg38 released
        # Register ireg37 allocated
        mov     ireg37,ireg38
        # Register ireg39 allocated
        mov     ireg39,#0
        # Register ireg36 released
        # Register r1 allocated
        mov     r1,ireg36
        # Register ireg37 released
        # Register r2 allocated
        mov     r2,ireg37
        # Register ireg39 released
        # Register r0 allocated
        mov     r0,ireg39
        # Register r1,r2,r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_write_text_shortstr
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register ireg40 allocated
        mov     ireg40,ireg34
        # Register ireg40 released
        # Register r0 allocated
        mov     r0,ireg40
        # Register r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_writeln_end
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register ireg34 sync
        # Register ireg34 released
        b       .Lj84
.Lj69:
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_get_output
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r1,r2,r3,r12,r13,r14,r0
 released
        # Register ireg42 allocated
        mov     ireg42,r0
        # Register ireg42 released
        # Register ireg41 allocated
        mov     ireg41,ireg42
        # Register ireg43 allocated
        mov     ireg43,ireg41
        # Register ireg45 allocated
        ldr     ireg45,.Lj91
        # Register ireg45 released
        # Register ireg44 allocated
        mov     ireg44,ireg45
        # Register ireg46 allocated
        mov     ireg46,#0
        # Register ireg43 released
        # Register r1 allocated
        mov     r1,ireg43
        # Register ireg44 released
        # Register r2 allocated
        mov     r2,ireg44
        # Register ireg46 released
        # Register r0 allocated
        mov     r0,ireg46
        # Register r1,r2,r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_write_text_shortstr
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register ireg47 allocated
        ldr     ireg47,.Lj96
        # Register ireg48 allocated
        mvn     ireg48,#0
        # Register ireg49 allocated
        ldr     ireg49,.Lj67
        # Register ireg49 released
        # Register mreg82fd allocated
        fldd    mreg82fd,[ireg49]
        # Register mreg82fd released
        # Register mreg81fd allocated
        fcpyd   mreg81fd,mreg82fd
        # Register ireg50 allocated
        mov     ireg50,ireg41
        # Register ireg51 allocated
        mov     ireg51,#1
        # Register ireg47 released
        # Register r2 allocated
        mov     r2,ireg47
        # Register ireg48 released
        # Register r1 allocated
        mov     r1,ireg48
        # Register mreg81fd released
        # Register d0 allocated
        fcpyd   d0,mreg81fd
        # Register ireg50 released
        # Register r3 allocated
        mov     r3,ireg50
        # Register ireg51 released
        # Register r0 allocated
        mov     r0,ireg51
        # Register r2,r1,d0,r3,r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_write_text_float
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register ireg52 allocated
        mov     ireg52,ireg41
        # Register ireg52 released
        # Register r0 allocated
        mov     r0,ireg52
        # Register r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     fpc_writeln_end
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register ireg41 sync
        # Register ireg41 released
.Lj84:
        # Register ireg54 allocated
        .stabn 68,0,10,.Ll4 - P$TESTFP_$$_G0
.Ll4:
# [10] flush(output);
        ldr     ireg54,.Lj112
        # Register ireg54 released
        # Register ireg53 allocated
        ldr     ireg53,[ireg54]
        cmp     ireg53,#0
        beq     .Lj110
        # Register r0,ireg55 allocated
        ldr     ireg55,.Lj113
        # Register ireg55 released
        ldr     r0,[ireg55]
        # Register r0,ireg53 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     ireg53
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register r0 allocated
        # Register r0 released
        # Register ireg56 allocated
        mov     ireg56,r0
        b       .Lj111
.Lj110:
        # Register ireg57 allocated
        ldr     ireg57,.Lj114
        # Register ireg57 released
        mov     ireg56,ireg57
.Lj111:
        # Register ireg56 released
        # Register ireg58 allocated
        mov     ireg58,ireg56
        # Register ireg58 released
        # Register r0 allocated
        mov     r0,ireg58
        # Register r0 released
        # Register 
r0,r1,r2,r3,r12,r13,r14,d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd
 allocated
        blx     SYSTEM_$$_FLUSH$TEXT
        # Register 
d0,d1,d2,d3,d4,d5,d6,d7,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,mreg32fd,mreg33fd,mreg34fd,mreg35fd,mreg36fd,mreg37fd,mreg38fd,mreg39fd,r0,r1,r2,r3,r12,r13,r14
 released
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_IOCHECK
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        .stabn 68,0,11,.Ll5 - P$TESTFP_$$_G0
.Ll5:
# [11] end;
        ldmea   r11,{r11,r13,r15}
.Lj10:
        .long   .Lj9
.Lj9:
# value: 0d+1.50000000000000E+001
        .byte   0,0,0,0,0,0,46,64
.Lj14:
        .long   .Lj13
.Lj13:
# value: 0d+1.400000000E+01
        .byte   0,0,96,65
.Lj18:
        .long   .Lj17
.Lj17:
# value: 0d+1.300000000E+01
        .byte   0,0,80,65
.Lj22:
        .long   .Lj21
.Lj21:
# value: 0d+1.200000000E+01
        .byte   0,0,64,65
.Lj26:
        .long   .Lj25
.Lj25:
# value: 0d+1.100000000E+01
        .byte   0,0,48,65
.Lj30:
        .long   .Lj29
.Lj29:
# value: 0d+1.000000000E+01
        .byte   0,0,32,65
.Lj34:
        .long   .Lj33
.Lj33:
# value: 0d+9.000000000E+00
        .byte   0,0,16,65
.Lj38:
        .long   .Lj37
.Lj37:
# value: 0d+8.000000000E+00
        .byte   0,0,0,65
.Lj42:
        .long   .Lj41
.Lj41:
# value: 0d+7.000000000E+00
        .byte   0,0,224,64
.Lj46:
        .long   .Lj45
.Lj45:
# value: 0d+6.000000000E+00
        .byte   0,0,192,64
.Lj50:
        .long   .Lj49
.Lj49:
# value: 0d+5.000000000E+00
        .byte   0,0,160,64
.Lj54:
        .long   .Lj53
.Lj53:
# value: 0d+4.000000000E+00
        .byte   0,0,128,64
.Lj58:
        .long   .Lj57
.Lj57:
# value: 0d+3.000000000E+00
        .byte   0,0,64,64
.Lj62:
        .long   .Lj61
.Lj61:
# value: 0d+2.000000000E+00
        .byte   0,0,0,64
.Lj66:
        .long   .Lj65
.Lj65:
# value: 0d+1.000000000E+00
        .byte   0,0,128,63
.Lj67:
        .long   U_$P$TESTFP_$$_D
.Lj72:
        .long   .Lj70
.Lj70:
# value: 0d+1.20000000000000E+002
        .byte   0,0,0,0,0,0,94,64
.Lj79:
        .long   _$TESTFP$_Ld1
.Lj91:
        .long   _$TESTFP$_Ld2
.Lj96:
        .long   -32767
.Lj112:
        .long   FPC_THREADVAR_RELOCATE
.Lj113:
        .long   U_$SYSTEM_$$_OUTPUT
.Lj114:
        .long   U_$SYSTEM_$$_OUTPUT+4
.Le0:
        .size   P$TESTFP_$$_G0, .Le0 - P$TESTFP_$$_G0
        .stabn 192,0,0,P$TESTFP_$$_G0-P$TESTFP_$$_G0
        .stabn 224,0,0,.Lt2-P$TESTFP_$$_G0
.Lt2:

.section .text.n_main
        .balign 4
.globl  PASCALMAIN
        .type   PASCALMAIN,#function
PASCALMAIN:
.globl  main
        .type   main,#function
main:
        .stabs "main:F2",36,0,5,main
# Temps allocated between r11-40 and r11-40
        # Register r13,r11,r12 allocated
        .stabs "testfp.dpr",132,0,0,.Lf2
.Lf2:
        .stabn 68,0,12,.Ll6 - main
.Ll6:
# [12] begin
        mov     r12,r13
        stmfd   r13!,{r11,r12,r14,r15}
        sub     r11,r12,#4
        # Register r12,r12 released
        sub     r13,r13,#40
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 allocated
        blx     FPC_INITIALIZEUNITS
        # Register r0,r1,r2,r3,r12,r13,r14,f0,f1,f2,f3 released
        # Register r0,r1,r2,r3,r12,r13,r14 allocated
        .stabn 68,0,13,.Ll7 - main
.Ll7:
# [13] g0;
        blx     P$TESTFP_$$_G0
        # Register r0,r1,r2,r3,r12,r13,r14 released
        .stabn 68,0,14,.Ll8 - main
.Ll8:
# [14] end.
        blx     FPC_DO_EXIT
        ldmea   r11,{r11,r13,r15}
.Le1:
        .size   main, .Le1 - main
        .stabn 192,0,0,main-main
        .stabn 224,0,0,.Lt1-main
.Lt1:

.section .text

.section .fpc.n_links
        .long   DEBUGINFO_$P$TESTFP
        .long   DEBUGSTART_$P$TESTFP
        .long   DEBUGEND_$P$TESTFP
# End asmlist al_procedures
# Begin asmlist al_globals

.section .bss
        .balign 8
# [6] var d: double;
        .globl U_$P$TESTFP_$$_D
        .type U_$P$TESTFP_$$_D,%object
        .size U_$P$TESTFP_$$_D,8
U_$P$TESTFP_$$_D:
        .zero 8

.section .data.n_THREADVARLIST_$P$TESTFP
        .balign 4
.globl  THREADVARLIST_$P$TESTFP
        .type   THREADVARLIST_$P$TESTFP,#object
THREADVARLIST_$P$TESTFP:
        .long   0
# [15] 
.Le2:
        .size   THREADVARLIST_$P$TESTFP, .Le2 - THREADVARLIST_$P$TESTFP

.section .data.n_INITFINAL
        .balign 4
.globl  INITFINAL
        .type   INITFINAL,#object
INITFINAL:
        .long   2,0
        .long   INIT$_$SYSTEM
        .long   0,0
        .long   FINALIZE$_$OBJPAS
.Le3:
        .size   INITFINAL, .Le3 - INITFINAL

.section .data.n_FPC_THREADVARTABLES
        .balign 4
.globl  FPC_THREADVARTABLES
        .type   FPC_THREADVARTABLES,#object
FPC_THREADVARTABLES:
        .long   3
        .long   THREADVARLIST_$SYSTEM
        .long   THREADVARLIST_$OBJPAS
        .long   THREADVARLIST_$P$TESTFP
.Le4:
        .size   FPC_THREADVARTABLES, .Le4 - FPC_THREADVARTABLES

.section .data.n_FPC_RESOURCESTRINGTABLES
        .balign 4
.globl  FPC_RESOURCESTRINGTABLES
        .type   FPC_RESOURCESTRINGTABLES,#object
FPC_RESOURCESTRINGTABLES:
        .long   0
.Le5:
        .size   FPC_RESOURCESTRINGTABLES, .Le5 - FPC_RESOURCESTRINGTABLES

.section .data.n_FPC_WIDEINITTABLES
        .balign 4
.globl  FPC_WIDEINITTABLES
        .type   FPC_WIDEINITTABLES,#object
FPC_WIDEINITTABLES:
        .long   0
.Le6:
        .size   FPC_WIDEINITTABLES, .Le6 - FPC_WIDEINITTABLES

.section .data.n_FPC_RESSTRINITTABLES
        .balign 4
.globl  FPC_RESSTRINITTABLES
        .type   FPC_RESSTRINITTABLES,#object
FPC_RESSTRINITTABLES:
        .long   0
.Le7:
        .size   FPC_RESSTRINITTABLES, .Le7 - FPC_RESSTRINITTABLES

.section .fpc.n_version
        .balign 8
        .ascii  "FPC 2.7.1 [2012/03/17] for arm - Linux"

.section .data.n___stklen
        .balign 4
.globl  __stklen
        .type   __stklen,#object
__stklen:
        .long   8388608

.section .data.n___heapsize
        .balign 4
.globl  __heapsize
        .type   __heapsize,#object
__heapsize:
        .long   0

.section .data.n___fpc_valgrind
.globl  __fpc_valgrind
        .type   __fpc_valgrind,#object
__fpc_valgrind:
        .byte   0

.section .data.n_FPC_RESLOCATION
        .balign 4
.globl  FPC_RESLOCATION
        .type   FPC_RESLOCATION,#object
FPC_RESLOCATION:
        .long   0
# End asmlist al_globals
# Begin asmlist al_const
# End asmlist al_const
# Begin asmlist al_typedconsts

.section .rodata.n__$TESTFP$_Ld1
        .balign 4
.globl  _$TESTFP$_Ld1
_$TESTFP$_Ld1:
        .ascii  "\026zssssssssssssssdd pass\000"

.section .rodata.n__$TESTFP$_Ld2
        .balign 4
.globl  _$TESTFP$_Ld2
_$TESTFP$_Ld2:
        .ascii  "\031zssssssssssssssdd fail d=\000"
# End asmlist al_typedconsts
# Begin asmlist al_rotypedconsts
# End asmlist al_rotypedconsts
# Begin asmlist al_threadvars
# End asmlist al_threadvars
# Begin asmlist al_imports
# End asmlist al_imports
# Begin asmlist al_exports
# End asmlist al_exports
# Begin asmlist al_resources
# End asmlist al_resources
# Begin asmlist al_rtti
# End asmlist al_rtti
# Begin asmlist al_dwarf_frame
# End asmlist al_dwarf_frame
# Begin asmlist al_dwarf_info
# End asmlist al_dwarf_info
# Begin asmlist al_dwarf_abbrev
# End asmlist al_dwarf_abbrev
# Begin asmlist al_dwarf_line
# End asmlist al_dwarf_line
# Begin asmlist al_picdata
# End asmlist al_picdata
# Begin asmlist al_resourcestrings
# End asmlist al_resourcestrings
# Begin asmlist al_objc_data
# End asmlist al_objc_data
# Begin asmlist al_objc_pools
# End asmlist al_objc_pools
# Begin asmlist al_end

.section .text.z_DEBUGEND_$P$TESTFP
.globl  DEBUGEND_$P$TESTFP
        .type   DEBUGEND_$P$TESTFP,#object
DEBUGEND_$P$TESTFP:
        .stabs "",100,0,0,.Lf4
.Lf4:
# End asmlist al_end
.section .note.GNU-stack,"",%progbits

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to