On 06/06/2010 20:44, Martin wrote:
It seems it is RegVar ( and -gt )

-gh -gt -g -gl -gw -godwarfsets -CX -XX -Xs -O2 -OpPENTIUMM -Oonoregvar
  -gh -gt -g  -gl  -gw -godwarfsets    -CX -XX -Xs   -O2  -OpPENTIUMM

the first one, works fine, the 2nd causes the crash.

I have no idea if the following is relevant.
Compiling the same unit with/without -gt / both times with -O2 leads to some difference in the order registers are used.

In the example below this is probably not relevant => I wonder if in other cases it could be relevant.

.section .text.n_buttons_tcustombitbtn_$__realizekind
    .balign 16,0x90
    .balign 16,0x90
.globl    BUTTONS_TCUSTOMBITBTN_$__REALIZEKIND
BUTTONS_TCUSTOMBITBTN_$__REALIZEKIND:

* WITH -gt has the following extra lines (of course, since it does the random intialize)
.Ll205:
    movb    $85,-64(%ebp)
    movb    $85,-4(%ebp)
    movl    $0,%esi
    movl    $1431655765,-8(%ebp)
    movl    $1431655765,-12(%ebp)

* I noted neiter eax nor edx are in this code => so I wonder if they should be affected later on?

then they share the SAME code
    movl    $0,-56(%ebp)
    leal    -24(%ebp),%ecx
    leal    -48(%ebp),%edx
    movl    $1,%eax
    call    FPC_PUSHEXCEPTADDR
    call    FPC_SETJMP
    pushl    %eax
    testl    %eax,%eax
    jne    .Lj494

** and then:

**** with -gt
.Ll206:
# [185] if (Kind <> bkCustom) then
    movl    -60(%ebp),%eax
    movl    852(%eax),%edx
    testl    %edx,%edx
    je    .Lj498

**** without -gt
.Ll194:
# [185] if (Kind <> bkCustom) then
    movl    -60(%ebp),%edx
    movl    852(%edx),%eax
    testl    %eax,%eax
    je    .Lj498

==> eax and adx have just been swapped.

In this case the result should be the same, and since both cases are using both registers, the 2 registers should in both cases be avail for usage.

I wonder if in other cases, eax may drop in for edx (or vice versa) where it may cause a proble (data replaced?)

The question is, should -gt have caused this change?


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

Reply via email to