Hi,
Here the first comparison of FPC and MSElang produced code:

Source:
"
program test1;

function test(p1: int32): int32;
var
 i1: int32;
begin
 i1:= p1;
 result:= p1+i1;
end;

begin
 exitcode:= test(123);
end.
"

MSElang with LLVM backend with -O3:

"
        .file   "test-opt.ll"
        .text
        .globl  main
        .align  16, 0x90
        .type   main,@function
main:                                   # @main
# BB#0:
        movl    $246, %eax
        ret
.Ltmp0:
        .size   main, .Ltmp0-main


        .section        ".note.GNU-stack","",@progbits
"

FPC fixes_2_6 with -O3:

"
        .file "test1.pas"
[...]
.globl  P$TEST1_TEST$LONGINT$$LONGINT
        .type   P$TEST1_TEST$LONGINT$$LONGINT,@function
P$TEST1_TEST$LONGINT$$LONGINT:
# Temps allocated between esp+0 and esp+0
# Var p1 located in register edx
# Var $result located in register eax
# Var i1 located in register eax
# [test1.pas]
# [6] begin
        movl    %eax,%edx
# [7] i1:= p1;
        movl    %edx,%eax
# [8] result:= p1+i1;
        addl    %edx,%eax
# [9] end;
        ret
[...]
.globl  main
        .type   main,@function
main:
# Temps allocated between esp+0 and esp+0
# [11] begin
        call    FPC_INITIALIZEUNITS
# [12] exitcode:= test(123);
        movl    $123,%eax
        call    P$TEST1_TEST$LONGINT$$LONGINT
        movl    %eax,operatingsystem_result
# [13] end.
        call    FPC_DO_EXIT
        ret
[...]
"
;-)

Martin

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
mseide-msegui-talk mailing list
mseide-msegui-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk

Reply via email to