IDE: Added a check box for -WR compiler option. Issue #7154

git-svn-id: trunk@33527 -
This commit is contained in:
juha 2011-11-14 12:31:30 +00:00
parent 43d521337d
commit 81511cf49b
5 changed files with 130 additions and 105 deletions

View File

@ -1401,6 +1401,7 @@ begin
{ CodeGeneration }
p:=Path+'CodeGeneration/';
ReadSmartLinkUnit;
RelocatableUnit := aXMLConfig.GetValue(p+'RelocatableUnit/Value', false);
IOChecks := aXMLConfig.GetValue(p+'Checks/IOChecks/Value', false);
RangeChecks := aXMLConfig.GetValue(p+'Checks/RangeChecks/Value', false);
OverflowChecks := aXMLConfig.GetValue(p+'Checks/OverflowChecks/Value', false);
@ -1622,6 +1623,7 @@ begin
{ CodeGeneration }
p:=Path+'CodeGeneration/';
aXMLConfig.SetDeleteValue(p+'SmartLinkUnit/Value', SmartLinkUnit,false);
aXMLConfig.SetDeleteValue(p+'RelocatableUnit/Value', RelocatableUnit,false);
aXMLConfig.SetDeleteValue(p+'Checks/IOChecks/Value', IOChecks,false);
aXMLConfig.SetDeleteValue(p+'Checks/RangeChecks/Value', RangeChecks,false);
aXMLConfig.SetDeleteValue(p+'Checks/OverflowChecks/Value', OverflowChecks,false);
@ -2562,6 +2564,8 @@ begin
{ UnitStyle '' = Static 'D' = Dynamic (not implemented) 'X' = smart linked }
if SmartLinkUnit then
switches := switches + ' -CX';
if RelocatableUnit then
switches := switches + ' -WR';
{ Checks }
tempsw := '';
@ -3148,6 +3152,7 @@ begin
// Code Generation
fSmartLinkUnit := CompOpts.SmartLinkUnit;
fRelocatableUnit := CompOpts.RelocatableUnit;
fIOChecks := CompOpts.fIOChecks;
fRangeChecks := CompOpts.fRangeChecks;
fOverflowChecks := CompOpts.fOverflowChecks;
@ -3295,6 +3300,7 @@ begin
// code generation
if Tool<>nil then Tool.Path:='Code';
if Done(Tool.AddDiff('SmartLinkUnit',fSmartLinkUnit,CompOpts.SmartLinkUnit)) then exit;
if Done(Tool.AddDiff('Relocatable',fRelocatableUnit,CompOpts.RelocatableUnit)) then exit;
if Done(Tool.AddDiff('IOChecks',fIOChecks,CompOpts.fIOChecks)) then exit;
if Done(Tool.AddDiff('RangeChecks',fRangeChecks,CompOpts.fRangeChecks)) then exit;
if Done(Tool.AddDiff('OverflowChecks',fOverflowChecks,CompOpts.fOverflowChecks)) then exit;

View File

@ -3,95 +3,103 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Width = 601
ClientHeight = 523
ClientWidth = 601
TabOrder = 0
DesignLeft = 415
DesignTop = 197
object grpSmartLinkUnit: TGroupBox[0]
DesignLeft = 271
DesignTop = 89
object grpUnitStyle: TGroupBox[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = grpChecks
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = grpChecks
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = grpHeapSize
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 51
Top = 139
Width = 148
Anchors = [akTop, akLeft, akRight, akBottom]
Height = 74
Top = 149
Width = 168
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Top = 6
Caption = 'grpSmartLinkUnit'
ClientHeight = 33
ClientWidth = 144
Caption = 'grpUnitStyle'
ClientHeight = 56
ClientWidth = 164
TabOrder = 0
object chkSmartLinkUnit: TCheckBox
Left = 6
Height = 17
Height = 19
Top = 6
Width = 132
Width = 152
Align = alTop
BorderSpacing.Around = 6
Caption = 'chkSmartLinkUnit'
TabOrder = 0
end
object chkRelocatableUnit: TCheckBox
Left = 6
Height = 19
Top = 31
Width = 152
Align = alTop
BorderSpacing.Around = 6
Caption = 'chkRelocatableUnit'
TabOrder = 1
end
end
object grpChecks: TGroupBox[1]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 133
Height = 143
Top = 0
Width = 148
Width = 168
AutoSize = True
Caption = 'grpChecks'
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 115
ClientWidth = 144
ClientHeight = 125
ClientWidth = 164
TabOrder = 1
object chkChecksIO: TCheckBox
Left = 6
Height = 17
Height = 19
Top = 6
Width = 132
Width = 152
BorderSpacing.Around = 6
Caption = 'chkChecksIO'
TabOrder = 0
end
object chkChecksRange: TCheckBox
Left = 6
Height = 17
Top = 29
Width = 132
Height = 19
Top = 31
Width = 152
BorderSpacing.Around = 6
Caption = 'chkChecksRange'
TabOrder = 1
end
object chkChecksOverflow: TCheckBox
Left = 6
Height = 17
Top = 52
Width = 132
Height = 19
Top = 56
Width = 152
BorderSpacing.Around = 6
Caption = 'chkChecksOverflow'
TabOrder = 2
end
object chkChecksStack: TCheckBox
Left = 6
Height = 17
Top = 75
Width = 132
Height = 19
Top = 81
Width = 152
BorderSpacing.Around = 6
Caption = 'chkChecksStack'
TabOrder = 3
end
object chkVerifyObjMethodCall: TCheckBox
Left = 6
Height = 17
Top = 98
Width = 132
Height = 19
Top = 106
Width = 152
Caption = 'chkVerifyObjMethodCall'
TabOrder = 4
end
@ -103,23 +111,25 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 154
Height = 51
Top = 139
Width = 447
Anchors = [akTop, akLeft, akRight]
AnchorSideBottom.Control = grpUnitStyle
AnchorSideBottom.Side = asrBottom
Left = 174
Height = 74
Top = 149
Width = 427
Anchors = [akTop, akLeft, akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'grpHeapSize'
ClientHeight = 33
ClientWidth = 443
ClientHeight = 56
ClientWidth = 423
TabOrder = 2
object edtHeapSize: TEdit
Left = 6
Height = 21
Height = 20
Top = 6
Width = 431
Width = 411
Align = alTop
BorderSpacing.Around = 6
TabOrder = 0
@ -134,25 +144,25 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = grpChecks
AnchorSideBottom.Side = asrBottom
Left = 154
Height = 133
Left = 174
Height = 143
Top = 0
Width = 447
Width = 427
Anchors = [akTop, akLeft, akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 6
Caption = 'grpTargetPlatform'
ClientHeight = 115
ClientWidth = 443
ClientHeight = 125
ClientWidth = 423
TabOrder = 3
object lblTargetOS: TLabel
AnchorSideLeft.Control = grpTargetPlatform
AnchorSideTop.Control = TargetOSComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Height = 15
Top = 9
Width = 57
Width = 65
BorderSpacing.Around = 6
Caption = 'lblTargetOS'
ParentColor = False
@ -162,9 +172,9 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Control = TargetCPUComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Top = 36
Width = 63
Height = 15
Top = 35
Width = 74
BorderSpacing.Around = 6
Caption = 'lblTargetCPU'
ParentColor = False
@ -174,9 +184,9 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Control = TargetProcessorProcComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Top = 63
Width = 111
Height = 15
Top = 61
Width = 130
BorderSpacing.Around = 6
Caption = 'lblTargetProcessorProc'
ParentColor = False
@ -187,17 +197,16 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Control = grpTargetPlatform
AnchorSideRight.Control = grpTargetPlatform
AnchorSideRight.Side = asrBottom
Left = 75
Height = 21
Left = 83
Height = 20
Top = 6
Width = 362
Width = 334
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
ItemHeight = 13
TabOrder = 0
ItemHeight = 0
Style = csDropDownList
Text = 'TargetOSComboBox'
TabOrder = 0
end
object TargetCPUComboBox: TComboBox
AnchorSideLeft.Control = lblTargetCPU
@ -206,17 +215,16 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = grpTargetPlatform
AnchorSideRight.Side = asrBottom
Left = 81
Height = 21
Top = 33
Width = 356
Left = 92
Height = 20
Top = 32
Width = 325
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
ItemHeight = 13
TabOrder = 1
ItemHeight = 0
Style = csDropDownList
Text = 'TargetCPUComboBox'
TabOrder = 1
end
object TargetProcessorProcComboBox: TComboBox
AnchorSideLeft.Control = lblTargetProcessorProc
@ -225,97 +233,93 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = grpTargetPlatform
AnchorSideRight.Side = asrBottom
Left = 129
Height = 21
Top = 60
Width = 308
Left = 148
Height = 20
Top = 58
Width = 269
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
ItemHeight = 13
TabOrder = 2
ItemHeight = 0
Style = csDropDownList
Text = 'TargetProcessorProcComboBox'
TabOrder = 2
end
end
object grpOptimizations: TGroupBox[4]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = grpSmartLinkUnit
AnchorSideTop.Control = grpUnitStyle
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 327
Top = 196
Height = 294
Top = 229
Width = 601
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 6
Caption = 'grpOptimizations'
ClientHeight = 309
ClientHeight = 276
ClientWidth = 597
TabOrder = 4
object radOptLevelNone: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = grpOptimizations
Left = 6
Height = 17
Height = 20
Top = 6
Width = 102
Width = 120
BorderSpacing.Around = 6
Caption = 'radOptLevelNone'
Checked = True
State = cbChecked
TabOrder = 0
TabStop = True
end
object radOptLevel1: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = radOptLevelNone
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 29
Width = 83
Height = 20
Top = 32
Width = 97
BorderSpacing.Around = 6
Caption = 'radOptLevel1'
TabOrder = 1
TabStop = False
end
object radOptLevel2: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = radOptLevel1
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 52
Width = 83
Height = 20
Top = 58
Width = 97
BorderSpacing.Around = 6
Caption = 'radOptLevel2'
TabOrder = 2
TabStop = False
end
object radOptLevel3: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = radOptLevel2
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 75
Width = 83
Height = 20
Top = 84
Width = 97
BorderSpacing.Around = 6
Caption = 'radOptLevel3'
TabOrder = 3
TabStop = False
end
object chkOptVarsInReg: TCheckBox
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = Bevel1
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 107
Width = 102
Height = 19
Top = 119
Width = 119
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
@ -327,9 +331,9 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Control = chkOptVarsInReg
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 130
Width = 98
Height = 19
Top = 144
Width = 115
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
@ -342,9 +346,9 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 17
Top = 153
Width = 86
Height = 19
Top = 169
Width = 105
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
@ -359,7 +363,7 @@ inherited CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 6
Height = 3
Top = 98
Top = 110
Width = 585
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6

View File

@ -24,12 +24,13 @@ type
chkOptUncertain: TCheckBox;
chkOptVarsInReg: TCheckBox;
chkSmartLinkUnit: TCheckBox;
chkRelocatableUnit: TCheckBox;
chkVerifyObjMethodCall: TCheckBox;
edtHeapSize: TEdit;
grpChecks: TGroupBox;
grpHeapSize: TGroupBox;
grpOptimizations: TGroupBox;
grpSmartLinkUnit: TGroupBox;
grpUnitStyle: TGroupBox;
grpTargetPlatform: TGroupBox;
lblTargetCPU: TLabel;
lblTargetOS: TLabel;
@ -109,8 +110,9 @@ end;
procedure TCompilerCodegenOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
grpSmartLinkUnit.Caption := dlgCOUnitStyle;
grpUnitStyle.Caption := dlgCOUnitStyle;
chkSmartLinkUnit.Caption := dlgCOSmartLinkable + ' (-CX)';
chkRelocatableUnit.Caption := dlgCORelocatable + ' (-WR)';
grpChecks.Caption := dlgCOChecks;
chkChecksIO.Caption := 'I/O (-Ci)';
@ -214,6 +216,7 @@ begin
with AOptions as TBaseCompilerOptions do
begin
chkSmartLinkUnit.Checked := SmartLinkUnit;
chkRelocatableUnit.Checked := RelocatableUnit;
chkChecksIO.Checked := IOChecks;
chkChecksRange.Checked := RangeChecks;
@ -260,6 +263,7 @@ begin
with AOptions as TBaseCompilerOptions do
begin
SmartLinkUnit := chkSmartLinkUnit.Checked;
RelocatableUnit := chkRelocatableUnit.Checked;
IOChecks := chkChecksIO.Checked;
RangeChecks := chkChecksRange.Checked;

View File

@ -1804,6 +1804,7 @@ resourcestring
dlgGPCComp = 'GPC (GNU Pascal Compiler) Compatible';
dlgCOUnitStyle = 'Unit Style';
dlgCOSmartLinkable = 'Smart Linkable';
dlgCORelocatable = 'Relocatable';
dlgCOChecks = 'Checks';
dlgCORange = 'Range';
dlgCOOverflow = 'Overflow';

View File

@ -147,6 +147,7 @@ type
procedure SetShowWarn(const AValue: Boolean);
procedure SetSmallerCode(const AValue: boolean);
procedure SetSmartLinkUnit(const AValue: Boolean);
procedure SetRelocatableUnit(const AValue: Boolean);
procedure SetStackChecks(const AValue: Boolean);
procedure SetStaticKeyword(const AValue: Boolean);
procedure SetStopAfterErrCount(const AValue: integer);
@ -192,6 +193,7 @@ type
// Code generation:
fSmartLinkUnit: Boolean;
fRelocatableUnit: Boolean;
fIOChecks: Boolean;
fRangeChecks: Boolean;
fOverflowChecks: Boolean;
@ -333,6 +335,7 @@ type
property OverflowChecks: Boolean read fOverflowChecks write SetOverflowChecks;
property StackChecks: Boolean read fStackChecks write SetStackChecks;
property SmartLinkUnit: Boolean read fSmartLinkUnit write SetSmartLinkUnit;
property RelocatableUnit: Boolean read fRelocatableUnit write SetRelocatableUnit;
property EmulatedFloatOpcodes: boolean read SetEmulatedFloatOpcodes
write SetEmulatedFloatOpcodes;
property HeapSize: Integer read fHeapSize write SetHeapSize;
@ -604,6 +607,13 @@ begin
IncreaseChangeStamp;
end;
procedure TLazCompilerOptions.SetRelocatableUnit(const AValue: Boolean);
begin
if fRelocatableUnit=AValue then exit;
fRelocatableUnit:=AValue;
IncreaseChangeStamp;
end;
procedure TLazCompilerOptions.SetStackChecks(const AValue: Boolean);
begin
if fStackChecks=AValue then exit;