* fix for bug #859

This commit is contained in:
pierre 2000-03-01 13:20:33 +00:00
parent 647d815403
commit 16814c48ab

View File

@ -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
}
}