* new int - int conversion -dNEWCNV

* some function renamings
This commit is contained in:
peter 1998-11-26 13:10:39 +00:00
parent 13d2cb30b0
commit a62eb86cde
5 changed files with 683 additions and 445 deletions

File diff suppressed because it is too large Load Diff

View File

@ -739,7 +739,7 @@ implementation
exprasmlist^.concat(new(pai386,op_reg(asmop,opsize, exprasmlist^.concat(new(pai386,op_reg(asmop,opsize,
p^.location.register))); p^.location.register)));
emitoverflowcheck(p); emitoverflowcheck(p);
emitrangecheck(p); emitrangecheck(p,p^.resulttype);
end; end;
in_dec_x, in_dec_x,
in_inc_x : in_inc_x :
@ -843,7 +843,7 @@ implementation
ungetregister32(hregister); ungetregister32(hregister);
end; end;
emitoverflowcheck(p^.left^.left); emitoverflowcheck(p^.left^.left);
emitrangecheck(p^.left^.left); emitrangecheck(p^.left^.left,p^.left^.left^.resulttype);
end; end;
in_assigned_x : in_assigned_x :
begin begin
@ -970,7 +970,11 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.18 1998-11-24 17:04:27 peter Revision 1.19 1998-11-26 13:10:40 peter
* new int - int conversion -dNEWCNV
* some function renamings
Revision 1.18 1998/11/24 17:04:27 peter
* fixed length(char) when char is a variable * fixed length(char) when char is a variable
Revision 1.17 1998/11/05 12:02:33 peter Revision 1.17 1998/11/05 12:02:33 peter

View File

@ -64,11 +64,26 @@ implementation
function isconvertable(def_from,def_to : pdef; function isconvertable(def_from,def_to : pdef;
var doconv : tconverttype;fromtreetype : ttreetyp; var doconv : tconverttype;fromtreetype : ttreetyp;
explicit : boolean) : boolean; explicit : boolean) : boolean;
const {$ifdef NEWCNV}
{ Tbasetype: uauto,uvoid,uchar, { Tbasetype: uauto,uvoid,uchar,
u8bit,u16bit,u32bit, u8bit,u16bit,u32bit,
s8bit,s16bit,s32, s8bit,s16bit,s32,
bool8bit,bool16bit,boot32bit } bool8bit,bool16bit,boot32bit }
type
tbasedef=(bvoid,bchar,bint,bbool);
const
basedeftbl:array[tbasetype] of tbasedef =
(bvoid,bvoid,bchar,
bint,bint,bint,
bint,bint,bint,
bbool,bbool,bbool);
basedefconverts : array[tbasedef,tbasedef] of tconverttype =
((tc_not_possible,tc_not_possible,tc_not_possible,tc_not_possible),
(tc_not_possible,tc_equal,tc_not_possible,tc_not_possible),
(tc_not_possible,tc_not_possible,tc_int_2_int,tc_int_2_bool),
(tc_not_possible,tc_not_possible,tc_bool_2_int,tc_int_2_bool));
{$else}
const
basedefconverts : array[tbasetype,tbasetype] of tconverttype = basedefconverts : array[tbasetype,tbasetype] of tconverttype =
{uauto} {uauto}
((tc_not_possible,tc_not_possible,tc_not_possible, ((tc_not_possible,tc_not_possible,tc_not_possible,
@ -130,6 +145,7 @@ implementation
tc_bool_2_int,tc_bool_2_int,tc_bool_2_int, tc_bool_2_int,tc_bool_2_int,tc_bool_2_int,
tc_bool_2_int,tc_bool_2_int,tc_bool_2_int, tc_bool_2_int,tc_bool_2_int,tc_bool_2_int,
tc_int_2_bool,tc_int_2_bool,tc_only_rangechecks32bit)); tc_int_2_bool,tc_int_2_bool,tc_only_rangechecks32bit));
{$endif}
var var
b : boolean; b : boolean;
@ -148,30 +164,49 @@ implementation
case def_to^.deftype of case def_to^.deftype of
orddef : orddef :
begin begin
if (def_from^.deftype=orddef) then case def_from^.deftype of
begin orddef :
doconv:=basedefconverts[porddef(def_from)^.typ,porddef(def_to)^.typ]; begin
b:=true; {$ifdef NEWCNV}
if (doconv=tc_not_possible) or doconv:=basedefconverts[basedeftbl[porddef(def_from)^.typ],basedeftbl[porddef(def_to)^.typ]];
((doconv=tc_int_2_bool) and b:=true;
(not explicit) and if (doconv=tc_not_possible) or
(not is_boolean(def_from))) then ((doconv=tc_int_2_bool) and
b:=false; (not explicit) and
end; (not is_boolean(def_from))) then
b:=false;
{$else}
doconv:=basedefconverts[porddef(def_from)^.typ,porddef(def_to)^.typ];
b:=true;
if (doconv=tc_not_possible) or
((doconv=tc_int_2_bool) and
(not explicit) and
(not is_boolean(def_from))) then
b:=false;
{$endif}
end;
{$ifdef NEWCNV}
enumdef :
begin
doconv:=tc_int_2_int;
b:=true;
end;
{$endif}
end;
end; end;
stringdef : stringdef :
begin begin
case def_from^.deftype of case def_from^.deftype of
stringdef : begin stringdef : begin
doconv:=tc_string_to_string; doconv:=tc_string_2_string;
b:=true; b:=true;
end; end;
orddef : begin orddef : begin
{ char to string} { char to string}
if is_char(def_from) then if is_char(def_from) then
begin begin
doconv:=tc_char_to_string; doconv:=tc_char_2_string;
b:=true; b:=true;
end; end;
end; end;
@ -261,7 +296,7 @@ implementation
if (parraydef(def_to)^.lowrange=0) and if (parraydef(def_to)^.lowrange=0) and
is_equal(ppointerdef(def_from)^.definition,parraydef(def_to)^.definition) then is_equal(ppointerdef(def_from)^.definition,parraydef(def_to)^.definition) then
begin begin
doconv:=tc_pointer_to_array; doconv:=tc_pointer_2_array;
b:=true; b:=true;
end; end;
end; end;
@ -269,7 +304,7 @@ implementation
{ array of char to string } { array of char to string }
if is_equal(parraydef(def_to)^.definition,cchardef) then if is_equal(parraydef(def_to)^.definition,cchardef) then
begin begin
doconv:=tc_string_chararray; doconv:=tc_string_2_chararray;
b:=true; b:=true;
end; end;
end; end;
@ -285,16 +320,16 @@ implementation
if (fromtreetype=stringconstn) and if (fromtreetype=stringconstn) and
is_pchar(def_to) then is_pchar(def_to) then
begin begin
doconv:=tc_cstring_charpointer; doconv:=tc_cstring_2_pchar;
b:=true; b:=true;
end; end;
end; end;
orddef : begin orddef : begin
{ char constant to zero terminated string constant } { char constant to zero terminated string constant }
if (fromtreetype=ordconstn) and is_equal(def_from,cchardef) and if (fromtreetype=ordconstn) and is_equal(def_from,cchardef) and
is_pchar(def_to) then is_pchar(def_to) then
begin begin
doconv:=tc_cchar_charpointer; doconv:=tc_cchar_2_pchar;
b:=true; b:=true;
end; end;
end; end;
@ -303,7 +338,7 @@ implementation
if (parraydef(def_from)^.lowrange=0) and if (parraydef(def_from)^.lowrange=0) and
is_equal(parraydef(def_from)^.definition,ppointerdef(def_to)^.definition) then is_equal(parraydef(def_from)^.definition,ppointerdef(def_to)^.definition) then
begin begin
doconv:=tc_array_to_pointer; doconv:=tc_array_2_pointer;
b:=true; b:=true;
end; end;
end; end;
@ -370,7 +405,7 @@ implementation
if (def_from^.deftype=procdef) then if (def_from^.deftype=procdef) then
begin begin
def_from^.deftype:=procvardef; def_from^.deftype:=procvardef;
doconv:=tc_proc2procvar; doconv:=tc_proc_2_procvar;
b:=is_equal(def_from,def_to); b:=is_equal(def_from,def_to);
def_from^.deftype:=procdef; def_from^.deftype:=procdef;
end end
@ -675,7 +710,11 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.8 1998-11-17 00:36:42 peter Revision 1.9 1998-11-26 13:10:42 peter
* new int - int conversion -dNEWCNV
* some function renamings
Revision 1.8 1998/11/17 00:36:42 peter
* more ansistring fixes * more ansistring fixes
Revision 1.7 1998/10/14 13:33:24 peter Revision 1.7 1998/10/14 13:33:24 peter

View File

@ -234,30 +234,43 @@ implementation
type type
tfirstconvproc = procedure(var p : ptree); tfirstconvproc = procedure(var p : ptree);
{$ifdef NEWCNV}
procedure first_int_to_int(var p : ptree);
begin
if (p^.registers32=0) and
(p^.left^.location.loc<>LOC_REGISTER) and
(p^.resulttype^.size>p^.left^.resulttype^.size) then
begin
p^.registers32:=1;
p^.location.loc:=LOC_REGISTER;
end;
end;
{$else}
procedure first_bigger_smaller(var p : ptree); procedure first_bigger_smaller(var p : ptree);
begin begin
if (p^.left^.location.loc<>LOC_REGISTER) and (p^.registers32=0) then if (p^.left^.location.loc<>LOC_REGISTER) and (p^.registers32=0) then
p^.registers32:=1; p^.registers32:=1;
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
end; end;
{$endif}
procedure first_cstring_to_pchar(var p : ptree);
procedure first_cstring_charpointer(var p : ptree);
begin begin
p^.registers32:=1; p^.registers32:=1;
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
end; end;
procedure first_string_chararray(var p : ptree); procedure first_string_to_chararray(var p : ptree);
begin begin
p^.registers32:=1; p^.registers32:=1;
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
end; end;
procedure first_string_string(var p : ptree); procedure first_string_to_string(var p : ptree);
begin begin
if pstringdef(p^.resulttype)^.string_typ<> if pstringdef(p^.resulttype)^.string_typ<>
pstringdef(p^.left^.resulttype)^.string_typ then pstringdef(p^.left^.resulttype)^.string_typ then
@ -309,7 +322,7 @@ implementation
end; end;
procedure first_int_real(var p : ptree); procedure first_int_to_real(var p : ptree);
var var
t : ptree; t : ptree;
begin begin
@ -338,7 +351,7 @@ implementation
end; end;
procedure first_int_fix(var p : ptree); procedure first_int_to_fix(var p : ptree);
begin begin
if p^.left^.treetype=ordconstn then if p^.left^.treetype=ordconstn then
begin begin
@ -358,7 +371,7 @@ implementation
end; end;
procedure first_real_fix(var p : ptree); procedure first_real_to_fix(var p : ptree);
begin begin
if p^.left^.treetype=realconstn then if p^.left^.treetype=realconstn then
begin begin
@ -381,7 +394,7 @@ implementation
end; end;
procedure first_fix_real(var p : ptree); procedure first_fix_to_real(var p : ptree);
begin begin
if p^.left^.treetype=fixconstn then if p^.left^.treetype=fixconstn then
begin begin
@ -401,7 +414,7 @@ implementation
end; end;
procedure first_real_real(var p : ptree); procedure first_real_to_real(var p : ptree);
begin begin
if p^.registersfpu<1 then if p^.registersfpu<1 then
p^.registersfpu:=1; p^.registersfpu:=1;
@ -417,7 +430,7 @@ implementation
end; end;
procedure first_chararray_string(var p : ptree); procedure first_chararray_to_string(var p : ptree);
begin begin
{ the only important information is the location of the } { the only important information is the location of the }
{ result } { result }
@ -426,7 +439,7 @@ implementation
end; end;
procedure first_cchar_charpointer(var p : ptree); procedure first_cchar_to_pchar(var p : ptree);
begin begin
p^.left:=gentypeconvnode(p^.left,cshortstringdef); p^.left:=gentypeconvnode(p^.left,cshortstringdef);
{ convert constant char to constant string } { convert constant char to constant string }
@ -436,13 +449,15 @@ implementation
end; end;
{$ifndef NEWCNV}
procedure first_locmem(var p : ptree); procedure first_locmem(var p : ptree);
begin begin
p^.location.loc:=LOC_MEM; p^.location.loc:=LOC_MEM;
end; end;
{$endif}
procedure first_bool_int(var p : ptree); procedure first_bool_to_int(var p : ptree);
begin begin
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
{ Florian I think this is overestimated { Florian I think this is overestimated
@ -456,7 +471,7 @@ implementation
end; end;
procedure first_int_bool(var p : ptree); procedure first_int_to_bool(var p : ptree);
begin begin
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
{ Florian I think this is overestimated { Florian I think this is overestimated
@ -500,6 +515,7 @@ implementation
p^.location.loc:=LOC_MEM; p^.location.loc:=LOC_MEM;
end; end;
procedure first_ansistring_to_pchar(var p : ptree); procedure first_ansistring_to_pchar(var p : ptree);
begin begin
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
@ -529,13 +545,39 @@ implementation
aprocdef : pprocdef; aprocdef : pprocdef;
proctype : tdeftype; proctype : tdeftype;
const const
firstconvert : array[tconverttype] of firstconvert : array[tconverttype] of tfirstconvproc = (
tfirstconvproc = (first_nothing,first_nothing, {$ifdef NEWCNV}
first_nothing, {equal}
first_nothing, {not_possible}
first_string_to_string,
first_char_to_string,
first_pchar_to_string,
first_cchar_to_pchar,
first_cstring_to_pchar,
first_ansistring_to_pchar,
first_string_to_chararray,
first_chararray_to_string,
first_array_to_pointer,
first_pointer_to_array,
first_int_to_int,
first_bool_to_int,
first_int_to_bool,
first_real_to_real,
first_int_to_real,
first_int_to_fix,
first_real_to_fix,
first_fix_to_real,
first_proc_to_procvar,
first_arrayconstructor_to_set,
first_load_smallset
);
{$else}
first_nothing,first_nothing,
first_bigger_smaller,first_nothing,first_bigger_smaller, first_bigger_smaller,first_nothing,first_bigger_smaller,
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
first_bigger_smaller,first_string_string, first_bigger_smaller,first_string_to_string,
first_cstring_charpointer,first_string_chararray, first_cstring_to_pchar,first_string_to_chararray,
first_array_to_pointer,first_pointer_to_array, first_array_to_pointer,first_pointer_to_array,
first_char_to_string,first_bigger_smaller, first_char_to_string,first_bigger_smaller,
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
@ -547,16 +589,16 @@ implementation
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
first_bigger_smaller,first_bigger_smaller, first_bigger_smaller,first_bigger_smaller,
first_bool_int,first_int_bool, first_bool_to_int,first_int_to_bool,
first_int_real,first_real_fix, first_int_to_real,first_real_to_fix,
first_fix_real,first_int_fix,first_real_real, first_fix_to_real,first_int_to_fix,first_real_to_real,
first_locmem,first_proc_to_procvar, first_locmem,first_proc_to_procvar,
first_cchar_charpointer, first_cchar_to_pchar,
first_load_smallset, first_load_smallset,
first_ansistring_to_pchar, first_ansistring_to_pchar,
first_pchar_to_string, first_pchar_to_string,
first_arrayconstructor_to_set); first_arrayconstructor_to_set);
{$endif}
begin begin
aprocdef:=nil; aprocdef:=nil;
{ if explicite type cast, then run firstpass } { if explicite type cast, then run firstpass }
@ -689,7 +731,7 @@ implementation
aprocdef:=pprocsym(p^.left^.symtableentry)^.definition; aprocdef:=pprocsym(p^.left^.symtableentry)^.definition;
end; end;
p^.convtyp:=tc_proc2procvar; p^.convtyp:=tc_proc_2_procvar;
{ Now check if the procedure we are going to assign to { Now check if the procedure we are going to assign to
the procvar, is compatible with the procvar's type. the procvar, is compatible with the procvar's type.
Did the original procvar support do such a check? Did the original procvar support do such a check?
@ -913,7 +955,11 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.8 1998-11-05 12:03:03 peter Revision 1.9 1998-11-26 13:10:43 peter
* new int - int conversion -dNEWCNV
* some function renamings
Revision 1.8 1998/11/05 12:03:03 peter
* released useansistring * released useansistring
* removed -Sv, its now available in fpc modes * removed -Sv, its now available in fpc modes

View File

@ -45,96 +45,125 @@ unit tree;
pconstset = ^tconstset; pconstset = ^tconstset;
tconstset = array[0..31] of byte; tconstset = array[0..31] of byte;
ttreetyp = (addn, {Represents the + operator.} ttreetyp = (
muln, {Represents the * operator.} addn, {Represents the + operator.}
subn, {Represents the - operator.} muln, {Represents the * operator.}
divn, {Represents the div operator.} subn, {Represents the - operator.}
symdifn, {Represents the >< operator.} divn, {Represents the div operator.}
modn, {Represents the mod operator.} symdifn, {Represents the >< operator.}
assignn, {Represents an assignment.} modn, {Represents the mod operator.}
loadn, {Represents the use of a variabele.} assignn, {Represents an assignment.}
rangen, {Represents a range (i.e. 0..9).} loadn, {Represents the use of a variabele.}
ltn, {Represents the < operator.} rangen, {Represents a range (i.e. 0..9).}
lten, {Represents the <= operator.} ltn, {Represents the < operator.}
gtn, {Represents the > operator.} lten, {Represents the <= operator.}
gten, {Represents the >= operator.} gtn, {Represents the > operator.}
equaln, {Represents the = operator.} gten, {Represents the >= operator.}
unequaln, {Represents the <> operator.} equaln, {Represents the = operator.}
inn, {Represents the in operator.} unequaln, {Represents the <> operator.}
orn, {Represents the or operator.} inn, {Represents the in operator.}
xorn, {Represents the xor operator.} orn, {Represents the or operator.}
shrn, {Represents the shr operator.} xorn, {Represents the xor operator.}
shln, {Represents the shl operator.} shrn, {Represents the shr operator.}
slashn, {Represents the / operator.} shln, {Represents the shl operator.}
andn, {Represents the and operator.} slashn, {Represents the / operator.}
subscriptn, {??? Field in a record/object?} andn, {Represents the and operator.}
derefn, {Dereferences a pointer.} subscriptn, {??? Field in a record/object?}
addrn, {Represents the @ operator.} derefn, {Dereferences a pointer.}
doubleaddrn, {Represents the @@ operator.} addrn, {Represents the @ operator.}
ordconstn, {Represents an ordinal value.} doubleaddrn, {Represents the @@ operator.}
typeconvn, {Represents type-conversion/typecast.} ordconstn, {Represents an ordinal value.}
calln, {Represents a call node.} typeconvn, {Represents type-conversion/typecast.}
callparan, {Represents a parameter.} calln, {Represents a call node.}
realconstn, {Represents a real value.} callparan, {Represents a parameter.}
fixconstn, {Represents a fixed value.} realconstn, {Represents a real value.}
umminusn, {Represents a sign change (i.e. -2).} fixconstn, {Represents a fixed value.}
asmn, {Represents an assembler node } umminusn, {Represents a sign change (i.e. -2).}
vecn, {Represents array indexing.} asmn, {Represents an assembler node }
stringconstn, {Represents a string constant.} vecn, {Represents array indexing.}
funcretn, {Represents the function result var.} stringconstn, {Represents a string constant.}
selfn, {Represents the self parameter.} funcretn, {Represents the function result var.}
notn, {Represents the not operator.} selfn, {Represents the self parameter.}
inlinen, {Internal procedures (i.e. writeln).} notn, {Represents the not operator.}
niln, {Represents the nil pointer.} inlinen, {Internal procedures (i.e. writeln).}
errorn, {This part of the tree could not be niln, {Represents the nil pointer.}
parsed because of a compiler error.} errorn, {This part of the tree could not be
typen, {A type name. Used for i.e. typeof(obj).} parsed because of a compiler error.}
hnewn, {The new operation, constructor call.} typen, {A type name. Used for i.e. typeof(obj).}
hdisposen, {The dispose operation with destructor call.} hnewn, {The new operation, constructor call.}
newn, {The new operation, constructor call.} hdisposen, {The dispose operation with destructor call.}
simpledisposen, {The dispose operation.} newn, {The new operation, constructor call.}
setelementn, {A set element(s) (i.e. [a,b] and also [a..b]).} simpledisposen, {The dispose operation.}
setconstn, {A set constant (i.e. [1,2]).} setelementn, {A set element(s) (i.e. [a,b] and also [a..b]).}
blockn, {A block of statements.} setconstn, {A set constant (i.e. [1,2]).}
statementn, {One statement in a block of nodes.} blockn, {A block of statements.}
loopn, { used in genloopnode, must be converted } statementn, {One statement in a block of nodes.}
ifn, {An if statement.} loopn, { used in genloopnode, must be converted }
breakn, {A break statement.} ifn, {An if statement.}
continuen, {A continue statement.} breakn, {A break statement.}
repeatn, {A repeat until block.} continuen, {A continue statement.}
whilen, {A while do statement.} repeatn, {A repeat until block.}
forn, {A for loop.} whilen, {A while do statement.}
exitn, {An exit statement.} forn, {A for loop.}
withn, {A with statement.} exitn, {An exit statement.}
casen, {A case statement.} withn, {A with statement.}
labeln, {A label.} casen, {A case statement.}
goton, {A goto statement.} labeln, {A label.}
simplenewn, {The new operation.} goton, {A goto statement.}
tryexceptn, {A try except block.} simplenewn, {The new operation.}
raisen, {A raise statement.} tryexceptn, {A try except block.}
switchesn, {??? Currently unused...} raisen, {A raise statement.}
tryfinallyn, {A try finally statement.} switchesn, {??? Currently unused...}
onn, { for an on statement in exception code } tryfinallyn, {A try finally statement.}
isn, {Represents the is operator.} onn, { for an on statement in exception code }
asn, {Represents the as typecast.} isn, {Represents the is operator.}
caretn, {Represents the ^ operator.} asn, {Represents the as typecast.}
failn, {Represents the fail statement.} caretn, {Represents the ^ operator.}
starstarn, {Represents the ** operator exponentiation } failn, {Represents the fail statement.}
procinlinen, {Procedures that can be inlined } starstarn, {Represents the ** operator exponentiation }
arrayconstructn, {Construction node for [...] parsing} procinlinen, {Procedures that can be inlined }
arrayconstructrangen, {Range element to allow sets in array construction tree} arrayconstructn, {Construction node for [...] parsing}
{ added for optimizations where we cannot suppress } arrayconstructrangen, {Range element to allow sets in array construction tree}
nothingn, { added for optimizations where we cannot suppress }
loadvmtn); {???.} nothingn,
loadvmtn
);
{$ifdef NEWCNV}
tconverttype = (
tc_equal,
tc_not_possible,
tc_string_2_string,
tc_char_2_string,
tc_pchar_2_string,
tc_cchar_2_pchar,
tc_cstring_2_pchar,
tc_ansistring_2_pchar,
tc_string_2_chararray,
tc_chararray_2_string,
tc_array_2_pointer,
tc_pointer_2_array,
tc_int_2_int,
tc_bool_2_int,
tc_int_2_bool,
tc_real_2_real,
tc_int_2_real,
tc_int_2_fix,
tc_real_2_fix,
tc_fix_2_real,
tc_proc_2_procvar,
tc_arrayconstructor_2_set,
tc_load_smallset
);
{$else}
tconverttype = (tc_equal,tc_not_possible,tc_u8bit_2_s32bit, tconverttype = (tc_equal,tc_not_possible,tc_u8bit_2_s32bit,
tc_only_rangechecks32bit,tc_s8bit_2_s32bit, tc_only_rangechecks32bit,tc_s8bit_2_s32bit,
tc_u16bit_2_s32bit,tc_s16bit_2_s32bit, tc_u16bit_2_s32bit,tc_s16bit_2_s32bit,
tc_s32bit_2_s16bit,tc_s32bit_2_u8bit, tc_s32bit_2_s16bit,tc_s32bit_2_u8bit,
tc_s32bit_2_u16bit,tc_string_to_string, tc_s32bit_2_u16bit,tc_string_2_string,
tc_cstring_charpointer,tc_string_chararray, tc_cstring_2_pchar,tc_string_2_chararray,
tc_array_to_pointer,tc_pointer_to_array, tc_array_2_pointer,tc_pointer_2_array,
tc_char_to_string,tc_u8bit_2_s16bit, tc_char_2_string,tc_u8bit_2_s16bit,
tc_u8bit_2_u16bit,tc_s8bit_2_s16bit, tc_u8bit_2_u16bit,tc_s8bit_2_s16bit,
tc_s16bit_2_s8bit,tc_s16bit_2_u8bit, tc_s16bit_2_s8bit,tc_s16bit_2_u8bit,
tc_u16bit_2_s8bit,tc_u16bit_2_u8bit, tc_u16bit_2_s8bit,tc_u16bit_2_u8bit,
@ -148,9 +177,10 @@ unit tree;
tc_int_2_real,tc_real_2_fix, tc_int_2_real,tc_real_2_fix,
tc_fix_2_real,tc_int_2_fix,tc_real_2_real, tc_fix_2_real,tc_int_2_fix,tc_real_2_real,
tc_chararray_2_string, tc_chararray_2_string,
tc_proc2procvar,tc_cchar_charpointer,tc_load_smallset, tc_proc_2_procvar,tc_cchar_2_pchar,tc_load_smallset,
tc_ansistring_2_pchar,tc_pchar_2_string, tc_ansistring_2_pchar,tc_pchar_2_string,
tc_arrayconstructor_2_set); tc_arrayconstructor_2_set);
{$endif}
{ allows to determine which elementes are to be replaced } { allows to determine which elementes are to be replaced }
tdisposetyp = (dt_nothing,dt_leftright,dt_left, tdisposetyp = (dt_nothing,dt_leftright,dt_left,
@ -1622,7 +1652,11 @@ unit tree;
end. end.
{ {
$Log$ $Log$
Revision 1.53 1998-11-24 12:52:42 peter Revision 1.54 1998-11-26 13:10:44 peter
* new int - int conversion -dNEWCNV
* some function renamings
Revision 1.53 1998/11/24 12:52:42 peter
* sets are not written twice anymore * sets are not written twice anymore
* optimize for emptyset+single element which uses a new routine from * optimize for emptyset+single element which uses a new routine from
set.inc FPC_SET_CREATE_ELEMENT set.inc FPC_SET_CREATE_ELEMENT