* add "doregister" parameter to tfloatdef.create, and don't register temporary

defs created in the scanner for evaluating compile time expressions

git-svn-id: trunk@32049 -
This commit is contained in:
Jonas Maebe 2015-10-13 15:59:15 +00:00
parent b22e2ef400
commit cebcf0afa8
3 changed files with 15 additions and 15 deletions

View File

@ -186,10 +186,10 @@ implementation
begin
if init_settings.fputype<>fpu_none then
begin
s32floattype:=cfloatdef.create(s32real);
s64floattype:=cfloatdef.create(s64real);
s80floattype:=cfloatdef.create(s80real);
sc80floattype:=cfloatdef.create(sc80real);
s32floattype:=cfloatdef.create(s32real,true);
s64floattype:=cfloatdef.create(s64real,true);
s80floattype:=cfloatdef.create(s80real,true);
sc80floattype:=cfloatdef.create(sc80real,true);
end else begin
s32floattype:=nil;
s64floattype:=nil;
@ -246,7 +246,7 @@ implementation
end
else
{$endif FPC_SUPPORT_X87_TYPES_ON_WIN64}
s64currencytype:=cfloatdef.create(s64currency);
s64currencytype:=cfloatdef.create(s64currency,true);
{$endif x86}
{$ifdef powerpc}
create_fpu_types;
@ -273,10 +273,10 @@ implementation
s64currencytype:=corddef.create(scurrency,low(int64),high(int64),true);
{$endif aarch64}
{$ifdef avr}
s32floattype:=cfloatdef.create(s32real);
s64floattype:=cfloatdef.create(s64real);
s80floattype:=cfloatdef.create(s80real);
sc80floattype:=cfloatdef.create(sc80real);
s32floattype:=cfloatdef.create(s32real,true);
s64floattype:=cfloatdef.create(s64real,true);
s80floattype:=cfloatdef.create(s80real,true);
sc80floattype:=cfloatdef.create(sc80real,true);
s64currencytype:=corddef.create(scurrency,low(int64),high(int64),true);
{$endif avr}
{$ifdef mips}
@ -359,7 +359,7 @@ implementation
{$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
if target_info.system<>system_x86_64_win64 then
{$endif FPC_SUPPORT_X87_TYPES_ON_WIN64}
addtype('Comp',cfloatdef.create(s64comp));
addtype('Comp',cfloatdef.create(s64comp,true));
{$endif x86}
addtype('Currency',s64currencytype);
addtype('Pointer',voidpointertype);

View File

@ -923,7 +923,7 @@ type
booldef:=torddef.create(pasbool8,0,1,false);
strdef:=tstringdef.createansi(0,false);
setdef:=tsetdef.create(sintdef,0,255,false);
realdef:=tfloatdef.create(s80real);
realdef:=tfloatdef.create(s80real,false);
end;
class destructor texprvalue.destroydefs;

View File

@ -535,7 +535,7 @@ interface
tfloatdef = class(tstoreddef)
floattype : tfloattype;
constructor create(t : tfloattype);virtual;
constructor create(t: tfloattype; doregister: boolean);virtual;
constructor ppuload(ppufile:tcompilerppufile);
function getcopy : tstoreddef;override;
{ do not override this routine in platform-specific subclasses,
@ -2777,9 +2777,9 @@ implementation
TFLOATDEF
****************************************************************************}
constructor tfloatdef.create(t : tfloattype);
constructor tfloatdef.create(t: tfloattype; doregister: boolean);
begin
inherited create(floatdef,true);
inherited create(floatdef,doregister);
floattype:=t;
setsize;
end;
@ -2796,7 +2796,7 @@ implementation
function tfloatdef.getcopy : tstoreddef;
begin
result:=cfloatdef.create(floattype);
result:=cfloatdef.create(floattype,true);
result.typ:=floatdef;
tfloatdef(result).savesize:=savesize;
end;