mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 19:39:20 +02:00
* moved UpdateAlignmentStr, UpdateOptimizerStr, UpdateWpoStr and UpdateDebugStr from unit globals to unit dirparse
git-svn-id: trunk@25634 -
This commit is contained in:
parent
235c06ab34
commit
826b4678f3
@ -28,8 +28,13 @@ unit dirparse;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
globtype;
|
globtype,
|
||||||
|
systems;
|
||||||
|
|
||||||
|
function UpdateAlignmentStr(s:string;var a:talignmentinfo):boolean;
|
||||||
|
function UpdateOptimizerStr(s:string;var a:toptimizerswitches):boolean;
|
||||||
|
function UpdateWpoStr(s: string; var a: twpoptimizerswitches): boolean;
|
||||||
|
function UpdateDebugStr(s:string;var a:tdebugswitches):boolean;
|
||||||
function UpdateTargetSwitchStr(s: string; var a: ttargetswitches; global: boolean): boolean;
|
function UpdateTargetSwitchStr(s: string; var a: ttargetswitches; global: boolean): boolean;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -39,6 +44,205 @@ implementation
|
|||||||
cutils,
|
cutils,
|
||||||
symtable;
|
symtable;
|
||||||
|
|
||||||
|
function UpdateAlignmentStr(s:string;var a:talignmentinfo):boolean;
|
||||||
|
var
|
||||||
|
tok : string;
|
||||||
|
vstr : string;
|
||||||
|
l : longint;
|
||||||
|
code : integer;
|
||||||
|
b : talignmentinfo;
|
||||||
|
begin
|
||||||
|
UpdateAlignmentStr:=true;
|
||||||
|
uppervar(s);
|
||||||
|
fillchar(b,sizeof(b),0);
|
||||||
|
repeat
|
||||||
|
tok:=GetToken(s,'=');
|
||||||
|
if tok='' then
|
||||||
|
break;
|
||||||
|
vstr:=GetToken(s,',');
|
||||||
|
val(vstr,l,code);
|
||||||
|
if tok='PROC' then
|
||||||
|
b.procalign:=l
|
||||||
|
else if tok='JUMP' then
|
||||||
|
b.jumpalign:=l
|
||||||
|
else if tok='LOOP' then
|
||||||
|
b.loopalign:=l
|
||||||
|
else if tok='CONSTMIN' then
|
||||||
|
begin
|
||||||
|
b.constalignmin:=l;
|
||||||
|
if l>b.constalignmax then
|
||||||
|
b.constalignmax:=l;
|
||||||
|
end
|
||||||
|
else if tok='CONSTMAX' then
|
||||||
|
b.constalignmax:=l
|
||||||
|
else if tok='VARMIN' then
|
||||||
|
begin
|
||||||
|
b.varalignmin:=l;
|
||||||
|
if l>b.varalignmax then
|
||||||
|
b.varalignmax:=l;
|
||||||
|
end
|
||||||
|
else if tok='VARMAX' then
|
||||||
|
b.varalignmax:=l
|
||||||
|
else if tok='LOCALMIN' then
|
||||||
|
begin
|
||||||
|
b.localalignmin:=l;
|
||||||
|
if l>b.localalignmax then
|
||||||
|
b.localalignmax:=l;
|
||||||
|
end
|
||||||
|
else if tok='LOCALMAX' then
|
||||||
|
b.localalignmax:=l
|
||||||
|
else if tok='RECORDMIN' then
|
||||||
|
begin
|
||||||
|
b.recordalignmin:=l;
|
||||||
|
if l>b.recordalignmax then
|
||||||
|
b.recordalignmax:=l;
|
||||||
|
end
|
||||||
|
else if tok='RECORDMAX' then
|
||||||
|
b.recordalignmax:=l
|
||||||
|
else { Error }
|
||||||
|
UpdateAlignmentStr:=false;
|
||||||
|
until false;
|
||||||
|
Result:=Result and UpdateAlignment(a,b);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function UpdateOptimizerStr(s:string;var a:toptimizerswitches):boolean;
|
||||||
|
var
|
||||||
|
tok : string;
|
||||||
|
doset,
|
||||||
|
found : boolean;
|
||||||
|
opt : toptimizerswitch;
|
||||||
|
begin
|
||||||
|
result:=true;
|
||||||
|
uppervar(s);
|
||||||
|
repeat
|
||||||
|
tok:=GetToken(s,',');
|
||||||
|
if tok='' then
|
||||||
|
break;
|
||||||
|
if Copy(tok,1,2)='NO' then
|
||||||
|
begin
|
||||||
|
delete(tok,1,2);
|
||||||
|
doset:=false;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
doset:=true;
|
||||||
|
found:=false;
|
||||||
|
for opt:=low(toptimizerswitch) to high(toptimizerswitch) do
|
||||||
|
begin
|
||||||
|
if OptimizerSwitchStr[opt]=tok then
|
||||||
|
begin
|
||||||
|
found:=true;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if found then
|
||||||
|
begin
|
||||||
|
if doset then
|
||||||
|
include(a,opt)
|
||||||
|
else
|
||||||
|
exclude(a,opt);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result:=false;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function UpdateWpoStr(s: string; var a: twpoptimizerswitches): boolean;
|
||||||
|
var
|
||||||
|
tok : string;
|
||||||
|
doset,
|
||||||
|
found : boolean;
|
||||||
|
opt : twpoptimizerswitch;
|
||||||
|
begin
|
||||||
|
result:=true;
|
||||||
|
uppervar(s);
|
||||||
|
repeat
|
||||||
|
tok:=GetToken(s,',');
|
||||||
|
if tok='' then
|
||||||
|
break;
|
||||||
|
if Copy(tok,1,2)='NO' then
|
||||||
|
begin
|
||||||
|
delete(tok,1,2);
|
||||||
|
doset:=false;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
doset:=true;
|
||||||
|
found:=false;
|
||||||
|
if (tok = 'ALL') then
|
||||||
|
begin
|
||||||
|
for opt:=low(twpoptimizerswitch) to high(twpoptimizerswitch) do
|
||||||
|
if doset then
|
||||||
|
include(a,opt)
|
||||||
|
else
|
||||||
|
exclude(a,opt);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
for opt:=low(twpoptimizerswitch) to high(twpoptimizerswitch) do
|
||||||
|
begin
|
||||||
|
if WPOptimizerSwitchStr[opt]=tok then
|
||||||
|
begin
|
||||||
|
found:=true;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if found then
|
||||||
|
begin
|
||||||
|
if doset then
|
||||||
|
include(a,opt)
|
||||||
|
else
|
||||||
|
exclude(a,opt);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result:=false;
|
||||||
|
end;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function UpdateDebugStr(s:string;var a:tdebugswitches):boolean;
|
||||||
|
var
|
||||||
|
tok : string;
|
||||||
|
doset,
|
||||||
|
found : boolean;
|
||||||
|
opt : tdebugswitch;
|
||||||
|
begin
|
||||||
|
result:=true;
|
||||||
|
uppervar(s);
|
||||||
|
repeat
|
||||||
|
tok:=GetToken(s,',');
|
||||||
|
if tok='' then
|
||||||
|
break;
|
||||||
|
if Copy(tok,1,2)='NO' then
|
||||||
|
begin
|
||||||
|
delete(tok,1,2);
|
||||||
|
doset:=false;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
doset:=true;
|
||||||
|
found:=false;
|
||||||
|
for opt:=low(tdebugswitch) to high(tdebugswitch) do
|
||||||
|
begin
|
||||||
|
if DebugSwitchStr[opt]=tok then
|
||||||
|
begin
|
||||||
|
found:=true;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if found then
|
||||||
|
begin
|
||||||
|
if doset then
|
||||||
|
include(a,opt)
|
||||||
|
else
|
||||||
|
exclude(a,opt);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result:=false;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function UpdateTargetSwitchStr(s: string; var a: ttargetswitches; global: boolean): boolean;
|
function UpdateTargetSwitchStr(s: string; var a: ttargetswitches; global: boolean): boolean;
|
||||||
var
|
var
|
||||||
tok,
|
tok,
|
||||||
|
@ -528,10 +528,6 @@ interface
|
|||||||
{$if defined(arm) or defined(avr)}
|
{$if defined(arm) or defined(avr)}
|
||||||
function SetControllerType(const s:string;var a:tcontrollertype):boolean;
|
function SetControllerType(const s:string;var a:tcontrollertype):boolean;
|
||||||
{$endif defined(arm) or defined(avr)}
|
{$endif defined(arm) or defined(avr)}
|
||||||
function UpdateAlignmentStr(s:string;var a:talignmentinfo):boolean;
|
|
||||||
function UpdateOptimizerStr(s:string;var a:toptimizerswitches):boolean;
|
|
||||||
function UpdateWpoStr(s: string; var a: twpoptimizerswitches): boolean;
|
|
||||||
function UpdateDebugStr(s:string;var a:tdebugswitches):boolean;
|
|
||||||
function IncludeFeature(const s : string) : boolean;
|
function IncludeFeature(const s : string) : boolean;
|
||||||
function SetMinFPConstPrec(const s: string; var a: tfloattype) : boolean;
|
function SetMinFPConstPrec(const s: string; var a: tfloattype) : boolean;
|
||||||
|
|
||||||
@ -1191,205 +1187,6 @@ implementation
|
|||||||
{$endif defined(arm) or defined(avr)}
|
{$endif defined(arm) or defined(avr)}
|
||||||
|
|
||||||
|
|
||||||
function UpdateAlignmentStr(s:string;var a:talignmentinfo):boolean;
|
|
||||||
var
|
|
||||||
tok : string;
|
|
||||||
vstr : string;
|
|
||||||
l : longint;
|
|
||||||
code : integer;
|
|
||||||
b : talignmentinfo;
|
|
||||||
begin
|
|
||||||
UpdateAlignmentStr:=true;
|
|
||||||
uppervar(s);
|
|
||||||
fillchar(b,sizeof(b),0);
|
|
||||||
repeat
|
|
||||||
tok:=GetToken(s,'=');
|
|
||||||
if tok='' then
|
|
||||||
break;
|
|
||||||
vstr:=GetToken(s,',');
|
|
||||||
val(vstr,l,code);
|
|
||||||
if tok='PROC' then
|
|
||||||
b.procalign:=l
|
|
||||||
else if tok='JUMP' then
|
|
||||||
b.jumpalign:=l
|
|
||||||
else if tok='LOOP' then
|
|
||||||
b.loopalign:=l
|
|
||||||
else if tok='CONSTMIN' then
|
|
||||||
begin
|
|
||||||
b.constalignmin:=l;
|
|
||||||
if l>b.constalignmax then
|
|
||||||
b.constalignmax:=l;
|
|
||||||
end
|
|
||||||
else if tok='CONSTMAX' then
|
|
||||||
b.constalignmax:=l
|
|
||||||
else if tok='VARMIN' then
|
|
||||||
begin
|
|
||||||
b.varalignmin:=l;
|
|
||||||
if l>b.varalignmax then
|
|
||||||
b.varalignmax:=l;
|
|
||||||
end
|
|
||||||
else if tok='VARMAX' then
|
|
||||||
b.varalignmax:=l
|
|
||||||
else if tok='LOCALMIN' then
|
|
||||||
begin
|
|
||||||
b.localalignmin:=l;
|
|
||||||
if l>b.localalignmax then
|
|
||||||
b.localalignmax:=l;
|
|
||||||
end
|
|
||||||
else if tok='LOCALMAX' then
|
|
||||||
b.localalignmax:=l
|
|
||||||
else if tok='RECORDMIN' then
|
|
||||||
begin
|
|
||||||
b.recordalignmin:=l;
|
|
||||||
if l>b.recordalignmax then
|
|
||||||
b.recordalignmax:=l;
|
|
||||||
end
|
|
||||||
else if tok='RECORDMAX' then
|
|
||||||
b.recordalignmax:=l
|
|
||||||
else { Error }
|
|
||||||
UpdateAlignmentStr:=false;
|
|
||||||
until false;
|
|
||||||
Result:=Result and UpdateAlignment(a,b);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function UpdateOptimizerStr(s:string;var a:toptimizerswitches):boolean;
|
|
||||||
var
|
|
||||||
tok : string;
|
|
||||||
doset,
|
|
||||||
found : boolean;
|
|
||||||
opt : toptimizerswitch;
|
|
||||||
begin
|
|
||||||
result:=true;
|
|
||||||
uppervar(s);
|
|
||||||
repeat
|
|
||||||
tok:=GetToken(s,',');
|
|
||||||
if tok='' then
|
|
||||||
break;
|
|
||||||
if Copy(tok,1,2)='NO' then
|
|
||||||
begin
|
|
||||||
delete(tok,1,2);
|
|
||||||
doset:=false;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
doset:=true;
|
|
||||||
found:=false;
|
|
||||||
for opt:=low(toptimizerswitch) to high(toptimizerswitch) do
|
|
||||||
begin
|
|
||||||
if OptimizerSwitchStr[opt]=tok then
|
|
||||||
begin
|
|
||||||
found:=true;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if found then
|
|
||||||
begin
|
|
||||||
if doset then
|
|
||||||
include(a,opt)
|
|
||||||
else
|
|
||||||
exclude(a,opt);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result:=false;
|
|
||||||
until false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function UpdateWpoStr(s: string; var a: twpoptimizerswitches): boolean;
|
|
||||||
var
|
|
||||||
tok : string;
|
|
||||||
doset,
|
|
||||||
found : boolean;
|
|
||||||
opt : twpoptimizerswitch;
|
|
||||||
begin
|
|
||||||
result:=true;
|
|
||||||
uppervar(s);
|
|
||||||
repeat
|
|
||||||
tok:=GetToken(s,',');
|
|
||||||
if tok='' then
|
|
||||||
break;
|
|
||||||
if Copy(tok,1,2)='NO' then
|
|
||||||
begin
|
|
||||||
delete(tok,1,2);
|
|
||||||
doset:=false;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
doset:=true;
|
|
||||||
found:=false;
|
|
||||||
if (tok = 'ALL') then
|
|
||||||
begin
|
|
||||||
for opt:=low(twpoptimizerswitch) to high(twpoptimizerswitch) do
|
|
||||||
if doset then
|
|
||||||
include(a,opt)
|
|
||||||
else
|
|
||||||
exclude(a,opt);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
for opt:=low(twpoptimizerswitch) to high(twpoptimizerswitch) do
|
|
||||||
begin
|
|
||||||
if WPOptimizerSwitchStr[opt]=tok then
|
|
||||||
begin
|
|
||||||
found:=true;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if found then
|
|
||||||
begin
|
|
||||||
if doset then
|
|
||||||
include(a,opt)
|
|
||||||
else
|
|
||||||
exclude(a,opt);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result:=false;
|
|
||||||
end;
|
|
||||||
until false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function UpdateDebugStr(s:string;var a:tdebugswitches):boolean;
|
|
||||||
var
|
|
||||||
tok : string;
|
|
||||||
doset,
|
|
||||||
found : boolean;
|
|
||||||
opt : tdebugswitch;
|
|
||||||
begin
|
|
||||||
result:=true;
|
|
||||||
uppervar(s);
|
|
||||||
repeat
|
|
||||||
tok:=GetToken(s,',');
|
|
||||||
if tok='' then
|
|
||||||
break;
|
|
||||||
if Copy(tok,1,2)='NO' then
|
|
||||||
begin
|
|
||||||
delete(tok,1,2);
|
|
||||||
doset:=false;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
doset:=true;
|
|
||||||
found:=false;
|
|
||||||
for opt:=low(tdebugswitch) to high(tdebugswitch) do
|
|
||||||
begin
|
|
||||||
if DebugSwitchStr[opt]=tok then
|
|
||||||
begin
|
|
||||||
found:=true;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if found then
|
|
||||||
begin
|
|
||||||
if doset then
|
|
||||||
include(a,opt)
|
|
||||||
else
|
|
||||||
exclude(a,opt);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result:=false;
|
|
||||||
until false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function IncludeFeature(const s : string) : boolean;
|
function IncludeFeature(const s : string) : boolean;
|
||||||
var
|
var
|
||||||
i : tfeature;
|
i : tfeature;
|
||||||
|
Loading…
Reference in New Issue
Block a user