mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 00:29:07 +02:00
+ made the $W switch control the FarProcsPushOddBP target switch in the i8086
compiler (BP7 compatibility) instead of controlling stack frame elimination (which isn't supported by the compiler on i8086 anyway, due to i8086's lack of support for stack relative addressing) git-svn-id: trunk@31834 -
This commit is contained in:
parent
e0aa6bf85f
commit
ae533e4c77
@ -42,7 +42,7 @@ procedure flushpendingswitchesstate;
|
||||
implementation
|
||||
uses
|
||||
systems,cpuinfo,
|
||||
globals,verbose,comphook,
|
||||
globals,verbose,comphook,dirparse,
|
||||
fmodule;
|
||||
|
||||
{****************************************************************************
|
||||
@ -50,7 +50,7 @@ uses
|
||||
****************************************************************************}
|
||||
|
||||
type
|
||||
TSwitchType=(ignoredsw,localsw,modulesw,globalsw,illegalsw,unsupportedsw,alignsw,optimizersw,packenumsw,pentiumfdivsw);
|
||||
TSwitchType=(ignoredsw,localsw,modulesw,globalsw,illegalsw,unsupportedsw,alignsw,optimizersw,packenumsw,pentiumfdivsw,targetsw);
|
||||
SwitchRec=record
|
||||
typesw : TSwitchType;
|
||||
setsw : byte;
|
||||
@ -85,7 +85,11 @@ const
|
||||
{T} (typesw:localsw; setsw:ord(cs_typed_addresses)),
|
||||
{U} (typesw:pentiumfdivsw; setsw:ord(cs_localnone)),
|
||||
{V} (typesw:localsw; setsw:ord(cs_strict_var_strings)),
|
||||
{$ifdef i8086}
|
||||
{W} (typesw:targetsw; setsw:ord(ts_x86_far_procs_push_odd_bp)),
|
||||
{$else i8086}
|
||||
{W} (typesw:localsw; setsw:ord(cs_generate_stackframes)),
|
||||
{$endif i8086}
|
||||
{X} (typesw:modulesw; setsw:ord(cs_extsyntax)),
|
||||
{Y} (typesw:unsupportedsw; setsw:ord(cs_localnone)),
|
||||
{Z} (typesw:packenumsw; setsw:ord(cs_localnone))
|
||||
@ -119,7 +123,11 @@ const
|
||||
{T} (typesw:localsw; setsw:ord(cs_typed_addresses)),
|
||||
{U} (typesw:illegalsw; setsw:ord(cs_localnone)),
|
||||
{V} (typesw:localsw; setsw:ord(cs_strict_var_strings)),
|
||||
{$ifdef i8086}
|
||||
{W} (typesw:targetsw; setsw:ord(ts_x86_far_procs_push_odd_bp)),
|
||||
{$else i8086}
|
||||
{W} (typesw:localsw; setsw:ord(cs_generate_stackframes)),
|
||||
{$endif i8086}
|
||||
{X} (typesw:modulesw; setsw:ord(cs_extsyntax)),
|
||||
{Y} (typesw:unsupportedsw; setsw:ord(cs_localnone)),
|
||||
{Z} (typesw:localsw; setsw:ord(cs_externally_visible))
|
||||
@ -222,6 +230,8 @@ begin
|
||||
if state='+' then
|
||||
Message1(scan_w_unsupported_switch,'$'+switch);
|
||||
end;
|
||||
targetsw:
|
||||
UpdateTargetSwitchStr(TargetSwitchStr[ttargetswitch(setsw)].name+state,current_settings.targetswitches,current_module.in_global);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user