mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 00:09:26 +02:00
* fix for bug #859
This commit is contained in:
parent
647d815403
commit
16814c48ab
@ -471,7 +471,13 @@ implementation
|
||||
{ can be false }
|
||||
pushed:=maybe_push(p^.right^.registers32,p^.left,false);
|
||||
secondpass(p^.right);
|
||||
if pushed then restore(p^.left,false);
|
||||
|
||||
{ restoring here is nonsense for LOC_JMP !! }
|
||||
{ This generated code that was after a jmp and before any
|
||||
label => unreachable !!
|
||||
Could this be tested somehow ?? PM }
|
||||
if pushed and (p^.right^.location.loc <>LOC_JUMP) then
|
||||
restore(p^.left,false);
|
||||
|
||||
if codegenerror then
|
||||
exit;
|
||||
@ -745,6 +751,8 @@ implementation
|
||||
LOC_JUMP : begin
|
||||
getlabel(hlabel);
|
||||
emitlab(truelabel);
|
||||
if pushed then
|
||||
restore(p^.left,false);
|
||||
if loc=LOC_CREGISTER then
|
||||
emit_const_reg(A_MOV,S_B,
|
||||
1,p^.left^.location.register)
|
||||
@ -755,6 +763,8 @@ implementation
|
||||
1,p^.left^.location);}
|
||||
emitjmp(C_None,hlabel);
|
||||
emitlab(falselabel);
|
||||
if pushed then
|
||||
restore(p^.left,false);
|
||||
if loc=LOC_CREGISTER then
|
||||
emit_reg_reg(A_XOR,S_B,
|
||||
p^.left^.location.register,
|
||||
@ -1009,7 +1019,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.101 2000-03-01 00:03:11 pierre
|
||||
Revision 1.102 2000-03-01 13:20:33 pierre
|
||||
* fix for bug 859
|
||||
|
||||
Revision 1.101 2000/03/01 00:03:11 pierre
|
||||
* fixes for locals in inlined procedures
|
||||
fix for bug797
|
||||
+ stabs generation for inlined paras and locals
|
||||
@ -1101,4 +1114,4 @@ end.
|
||||
Revision 1.79 1999/08/25 16:41:05 peter
|
||||
* resources are working again
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user