mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 20:09:25 +02:00
* bug with mul. of dwords fixed, reported by Alexander Stohr
* some changes to compile with TP + small enhancements for the new code generator
This commit is contained in:
parent
a3c0f5e306
commit
77f7afffa9
@ -798,10 +798,10 @@ implementation
|
||||
emitloadord2reg(p^.right^.location,u32bitdef,R_EAX,true);
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_MUL,S_L,R_EDI)));
|
||||
emit_reg_reg(A_MOV,S_L,R_EAX,p^.location.register);
|
||||
if popeax then
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EAX)));
|
||||
if popedx then
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EDX)));
|
||||
if popeax then
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EAX)));
|
||||
SetResultLocation(false,true,p);
|
||||
exit;
|
||||
end;
|
||||
@ -1737,7 +1737,12 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.38 1999-01-05 17:03:36 jonas
|
||||
Revision 1.39 1999-01-19 10:18:58 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.38 1999/01/05 17:03:36 jonas
|
||||
* don't output inc/dec if cs_check_overflow is on, because inc/dec don't change
|
||||
the carry flag
|
||||
|
||||
|
@ -545,7 +545,6 @@ implementation
|
||||
begin
|
||||
clear_location(pto^.location);
|
||||
pto^.location.loc:=LOC_REFERENCE;
|
||||
clear_reference(pto^.location.reference);
|
||||
gettempofsizereference(pto^.resulttype^.size,pto^.location.reference);
|
||||
ltemptoremove^.concat(new(ptemptodestroy,init(pto^.location.reference,pto^.resulttype)));
|
||||
exprasmlist^.concat(new(pai386,op_const_ref(A_MOV,S_L,0,newreference(pto^.location.reference))));
|
||||
@ -1345,6 +1344,9 @@ implementation
|
||||
{ the helper routines need access to the release list }
|
||||
ltemptoremove:=oldrl;
|
||||
|
||||
if not(assigned(ltemptoremove)) then
|
||||
internalerror(18011);
|
||||
|
||||
{ this isn't good coding, I think tc_bool_2_int, shouldn't be }
|
||||
{ type conversion (FK) }
|
||||
|
||||
@ -1476,7 +1478,12 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.43 1998-12-22 13:10:59 florian
|
||||
Revision 1.44 1999-01-19 10:18:59 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.43 1998/12/22 13:10:59 florian
|
||||
* memory leaks for ansistring type casts fixed
|
||||
|
||||
Revision 1.42 1998/12/19 00:23:42 florian
|
||||
|
@ -1328,15 +1328,6 @@ unit i386;
|
||||
procedure reset_reference(var ref : treference);
|
||||
|
||||
begin
|
||||
{$ifdef ver0_6}
|
||||
ref.index:=R_NO;
|
||||
ref.base:=R_NO;
|
||||
ref.segment:=R_DEFAULT_SEG;
|
||||
ref.offset:=0;
|
||||
ref.scalefactor:=1;
|
||||
ref.isintvalue:=false;
|
||||
ref.symbol:=nil;
|
||||
{$else}
|
||||
with ref do
|
||||
begin
|
||||
index:=R_NO;
|
||||
@ -1347,7 +1338,6 @@ unit i386;
|
||||
isintvalue:=false;
|
||||
symbol:=nil;
|
||||
end;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function new_reference(base : tregister;offset : longint) : preference;
|
||||
@ -1962,7 +1952,12 @@ Begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.28 1999-01-13 11:34:06 florian
|
||||
Revision 1.29 1999-01-19 10:19:02 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.28 1999/01/13 11:34:06 florian
|
||||
* unified i386.pas for the old and new code generator
|
||||
|
||||
Revision 1.27 1999/01/10 15:37:53 peter
|
||||
|
@ -42,19 +42,29 @@ unit convtree;
|
||||
node : pnode;
|
||||
|
||||
begin
|
||||
case p^.treetype of
|
||||
blockn:
|
||||
node:=new(pblocknode,init);
|
||||
else internalerror(13751);
|
||||
end;
|
||||
disposetree(p);
|
||||
convtree2node:=node;
|
||||
if assigned(p) then
|
||||
begin
|
||||
case p^.treetype of
|
||||
blockn:
|
||||
node:=new(pblocknode,init(convtree2node(p^.left)));
|
||||
else internalerror(13751);
|
||||
end;
|
||||
disposetree(p);
|
||||
convtree2node:=node;
|
||||
end
|
||||
else
|
||||
convtree2node:=nil;
|
||||
end;
|
||||
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 1999-01-13 22:52:37 florian
|
||||
Revision 1.2 1999-01-19 10:19:04 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.1 1999/01/13 22:52:37 florian
|
||||
+ YES, finally the new code generator is compilable, but it doesn't run yet :(
|
||||
|
||||
}
|
@ -195,7 +195,7 @@ unit tree;
|
||||
procedure pass_1;
|
||||
{ dermines the resulttype of the node }
|
||||
procedure det_resulttype;virtual;
|
||||
{ dermines the number of necessary temp. locations to evalute
|
||||
{ dermines the number of necessary temp. locations to evaluate
|
||||
the node }
|
||||
procedure det_temp;virtual;
|
||||
procedure secondpass;virtual;
|
||||
@ -208,7 +208,6 @@ unit tree;
|
||||
end;
|
||||
|
||||
ploadnode = ^tloadnode;
|
||||
|
||||
tloadnode = object(tnode)
|
||||
symtableentry : psym;
|
||||
symtable : psymtable;
|
||||
@ -282,6 +281,7 @@ unit tree;
|
||||
tunarynode = object(tnode)
|
||||
left : pnode;
|
||||
procedure dowrite;virtual;
|
||||
constructor init(l : pnode);
|
||||
end;
|
||||
|
||||
pbinarynode = ^tbinarynode;
|
||||
@ -298,7 +298,7 @@ unit tree;
|
||||
|
||||
pblocknode = ^tblocknode;
|
||||
tblocknode = object(tunarynode)
|
||||
constructor init;
|
||||
constructor init(l : pnode);
|
||||
end;
|
||||
|
||||
{$ifdef dummy}
|
||||
@ -605,6 +605,13 @@ unit tree;
|
||||
TUNARYNODE
|
||||
****************************************************************************}
|
||||
|
||||
constructor tunarynode.init(l : pnode);
|
||||
|
||||
begin
|
||||
inherited init;
|
||||
left:=l;
|
||||
end;
|
||||
|
||||
procedure tunarynode.dowrite;
|
||||
|
||||
begin
|
||||
@ -619,10 +626,10 @@ unit tree;
|
||||
TBLOCKNODE
|
||||
****************************************************************************}
|
||||
|
||||
constructor tblocknode.init;
|
||||
constructor tblocknode.init(l : pnode);
|
||||
|
||||
begin
|
||||
inherited init;
|
||||
inherited init(l);
|
||||
treetype:=blockn;
|
||||
end;
|
||||
|
||||
@ -1918,7 +1925,12 @@ unit tree;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 1999-01-13 22:52:40 florian
|
||||
Revision 1.4 1999-01-19 10:19:06 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.3 1999/01/13 22:52:40 florian
|
||||
+ YES, finally the new code generator is compilable, but it doesn't run yet :(
|
||||
|
||||
Revision 1.2 1998/12/26 15:20:32 florian
|
||||
|
@ -159,7 +159,6 @@ uses
|
||||
{$O os2_targ}
|
||||
{$O win_targ}
|
||||
{$endif i386}
|
||||
{$O asmutils}
|
||||
{$ifdef gdb}
|
||||
{$O gdb}
|
||||
{$endif gdb}
|
||||
@ -265,7 +264,12 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.37 1998-12-16 00:27:21 peter
|
||||
Revision 1.38 1999-01-19 10:19:03 florian
|
||||
* bug with mul. of dwords fixed, reported by Alexander Stohr
|
||||
* some changes to compile with TP
|
||||
+ small enhancements for the new code generator
|
||||
|
||||
Revision 1.37 1998/12/16 00:27:21 peter
|
||||
* removed some obsolete version checks
|
||||
|
||||
Revision 1.36 1998/11/27 22:54:52 michael
|
||||
|
Loading…
Reference in New Issue
Block a user