mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 21:30:23 +02:00
* fixed assert, the tree is now disposed in firstpass if assertions
are off.
This commit is contained in:
parent
35516c1700
commit
00ef632f73
@ -872,33 +872,33 @@ implementation
|
|||||||
case p^.inlinenumber of
|
case p^.inlinenumber of
|
||||||
in_assert_x_y:
|
in_assert_x_y:
|
||||||
begin
|
begin
|
||||||
|
{ the node should be removed in the firstpass }
|
||||||
|
if not (cs_do_assertion in aktlocalswitches) then
|
||||||
|
internalerror(7123458);
|
||||||
otlabel:=truelabel;
|
otlabel:=truelabel;
|
||||||
oflabel:=falselabel;
|
oflabel:=falselabel;
|
||||||
getlabel(truelabel);
|
getlabel(truelabel);
|
||||||
getlabel(falselabel);
|
getlabel(falselabel);
|
||||||
secondpass(p^.left^.left);
|
secondpass(p^.left^.left);
|
||||||
if cs_do_assertion in aktlocalswitches then
|
maketojumpbool(p^.left^.left);
|
||||||
begin
|
emitlab(falselabel);
|
||||||
maketojumpbool(p^.left^.left);
|
{ erroraddr }
|
||||||
emitlab(falselabel);
|
emit_reg(A_PUSH,S_L,R_EBP);
|
||||||
{ erroraddr }
|
{ lineno }
|
||||||
emit_reg(A_PUSH,S_L,R_EBP);
|
emit_const(A_PUSH,S_L,aktfilepos.line);
|
||||||
{ lineno }
|
{ filename string }
|
||||||
emit_const(A_PUSH,S_L,aktfilepos.line);
|
hp:=genstringconstnode(current_module^.sourcefiles^.get_file_name(aktfilepos.fileindex));
|
||||||
{ filename string }
|
secondpass(hp);
|
||||||
hp:=genstringconstnode(current_module^.sourcefiles^.get_file_name(aktfilepos.fileindex));
|
if codegenerror then
|
||||||
secondpass(hp);
|
exit;
|
||||||
if codegenerror then
|
emitpushreferenceaddr(hp^.location.reference);
|
||||||
exit;
|
disposetree(hp);
|
||||||
emitpushreferenceaddr(hp^.location.reference);
|
{ push msg }
|
||||||
disposetree(hp);
|
secondpass(p^.left^.right^.left);
|
||||||
{ push msg }
|
emitpushreferenceaddr(p^.left^.right^.left^.location.reference);
|
||||||
secondpass(p^.left^.right^.left);
|
{ call }
|
||||||
emitpushreferenceaddr(p^.left^.right^.left^.location.reference);
|
emitcall('FPC_ASSERT');
|
||||||
{ call }
|
emitlab(truelabel);
|
||||||
emitcall('FPC_ASSERT');
|
|
||||||
emitlab(truelabel);
|
|
||||||
end;
|
|
||||||
freelabel(truelabel);
|
freelabel(truelabel);
|
||||||
freelabel(falselabel);
|
freelabel(falselabel);
|
||||||
truelabel:=otlabel;
|
truelabel:=otlabel;
|
||||||
@ -1426,7 +1426,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.75 1999-10-26 12:30:40 peter
|
Revision 1.76 1999-10-29 15:28:51 peter
|
||||||
|
* fixed assert, the tree is now disposed in firstpass if assertions
|
||||||
|
are off.
|
||||||
|
|
||||||
|
Revision 1.75 1999/10/26 12:30:40 peter
|
||||||
* const parameter is now checked
|
* const parameter is now checked
|
||||||
* better and generic check if a node can be used for assigning
|
* better and generic check if a node can be used for assigning
|
||||||
* export fixes
|
* export fixes
|
||||||
|
@ -1243,6 +1243,15 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
CGMessage(type_e_mismatch);
|
CGMessage(type_e_mismatch);
|
||||||
|
{ We've checked the whole statement for correctness, now we
|
||||||
|
can remove it if assertions are off }
|
||||||
|
if not(cs_do_assertion in aktlocalswitches) then
|
||||||
|
begin
|
||||||
|
disposetree(p^.left);
|
||||||
|
putnode(p);
|
||||||
|
{ we need a valid node, so insert a nothingn }
|
||||||
|
p:=genzeronode(nothingn);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -1260,7 +1269,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.56 1999-10-26 12:30:46 peter
|
Revision 1.57 1999-10-29 15:28:51 peter
|
||||||
|
* fixed assert, the tree is now disposed in firstpass if assertions
|
||||||
|
are off.
|
||||||
|
|
||||||
|
Revision 1.56 1999/10/26 12:30:46 peter
|
||||||
* const parameter is now checked
|
* const parameter is now checked
|
||||||
* better and generic check if a node can be used for assigning
|
* better and generic check if a node can be used for assigning
|
||||||
* export fixes
|
* export fixes
|
||||||
|
Loading…
Reference in New Issue
Block a user