|
@@ -1,144 +0,0 @@
|
|
-{
|
|
|
|
- $Id$
|
|
|
|
- Copyright (c) 1998-2000 by Florian Klaempfl, Pierre Muller
|
|
|
|
-
|
|
|
|
- interprets the commandline options which are i386 specific
|
|
|
|
-
|
|
|
|
- This program is free software; you can redistribute it and/or modify
|
|
|
|
- it under the terms of the GNU General Public License as published by
|
|
|
|
- the Free Software Foundation; either version 2 of the License, or
|
|
|
|
- (at your option) any later version.
|
|
|
|
-
|
|
|
|
- This program is distributed in the hope that it will be useful,
|
|
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
- GNU General Public License for more details.
|
|
|
|
-
|
|
|
|
- You should have received a copy of the GNU General Public License
|
|
|
|
- along with this program; if not, write to the Free Software
|
|
|
|
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
-
|
|
|
|
- ****************************************************************************
|
|
|
|
-}
|
|
|
|
-unit opts386;
|
|
|
|
-
|
|
|
|
-{$i defines.inc}
|
|
|
|
-
|
|
|
|
-interface
|
|
|
|
-
|
|
|
|
-uses
|
|
|
|
- options;
|
|
|
|
-
|
|
|
|
-type
|
|
|
|
- poption386=^toption386;
|
|
|
|
- toption386=object(toption)
|
|
|
|
- procedure interpret_proc_specific_options(const opt:string);virtual;
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
-implementation
|
|
|
|
-
|
|
|
|
-uses
|
|
|
|
- cutils,globtype,systems,globals;
|
|
|
|
-
|
|
|
|
-procedure toption386.interpret_proc_specific_options(const opt:string);
|
|
|
|
-var
|
|
|
|
- j : longint;
|
|
|
|
- More : string;
|
|
|
|
-begin
|
|
|
|
- More:=Upper(copy(opt,3,length(opt)-2));
|
|
|
|
- case opt[2] of
|
|
|
|
- 'O' : Begin
|
|
|
|
- j := 3;
|
|
|
|
- While (j <= Length(Opt)) Do
|
|
|
|
- Begin
|
|
|
|
- case opt[j] of
|
|
|
|
- '-' : initglobalswitches:=initglobalswitches-[cs_optimize,cs_fastoptimize,cs_slowoptimize,cs_littlesize,
|
|
|
|
- cs_regalloc,cs_uncertainopts,cs_align];
|
|
|
|
- 'a' : initglobalswitches:=initglobalswitches+[cs_align];
|
|
|
|
- 'g' : initglobalswitches:=initglobalswitches+[cs_littlesize];
|
|
|
|
- 'G' : initglobalswitches:=initglobalswitches-[cs_littlesize];
|
|
|
|
- 'r' : initglobalswitches:=initglobalswitches+[cs_regalloc];
|
|
|
|
- 'u' : initglobalswitches:=initglobalswitches+[cs_uncertainopts];
|
|
|
|
- '1' : initglobalswitches:=initglobalswitches-[cs_fastoptimize,cs_slowoptimize]+[cs_optimize];
|
|
|
|
- '2' : initglobalswitches:=initglobalswitches-[cs_slowoptimize]+[cs_optimize,cs_fastoptimize];
|
|
|
|
- '3' : initglobalswitches:=initglobalswitches+[cs_optimize,cs_fastoptimize,cs_slowoptimize];
|
|
|
|
- 'p' :
|
|
|
|
- Begin
|
|
|
|
- If j < Length(Opt) Then
|
|
|
|
- Begin
|
|
|
|
- Case opt[j+1] Of
|
|
|
|
- '1': initoptprocessor := Class386;
|
|
|
|
- '2': initoptprocessor := ClassP5;
|
|
|
|
- '3': initoptprocessor := ClassP6
|
|
|
|
- Else IllegalPara(Opt)
|
|
|
|
- End;
|
|
|
|
- Inc(j);
|
|
|
|
- End
|
|
|
|
- Else IllegalPara(opt)
|
|
|
|
- End;
|
|
|
|
-{$ifdef USECMOV}
|
|
|
|
- 's' :
|
|
|
|
- Begin
|
|
|
|
- If j < Length(Opt) Then
|
|
|
|
- Begin
|
|
|
|
- Case opt[j+1] Of
|
|
|
|
- '3': initspecificoptprocessor:=ClassP6
|
|
|
|
- Else IllegalPara(Opt)
|
|
|
|
- End;
|
|
|
|
- Inc(j);
|
|
|
|
- End
|
|
|
|
- Else IllegalPara(opt)
|
|
|
|
- End
|
|
|
|
-{$endif USECMOV}
|
|
|
|
- else IllegalPara(opt);
|
|
|
|
- End;
|
|
|
|
- Inc(j)
|
|
|
|
- end;
|
|
|
|
- end;
|
|
|
|
- 'R' : begin
|
|
|
|
- if More='ATT' then
|
|
|
|
- initasmmode:=asmmode_i386_att
|
|
|
|
- else
|
|
|
|
- if More='INTEL' then
|
|
|
|
- initasmmode:=asmmode_i386_intel
|
|
|
|
- else
|
|
|
|
- if More='DIRECT' then
|
|
|
|
- initasmmode:=asmmode_i386_direct
|
|
|
|
- else
|
|
|
|
- IllegalPara(opt);
|
|
|
|
- end;
|
|
|
|
- else
|
|
|
|
- IllegalPara(opt);
|
|
|
|
- end;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
-end.
|
|
|
|
-{
|
|
|
|
- $Log$
|
|
|
|
- Revision 1.6 2000-10-24 10:40:53 jonas
|
|
|
|
- + register renaming ("fixes" bug1088)
|
|
|
|
- * changed command line options meanings for optimizer:
|
|
|
|
- O2 now means peepholopts, CSE and register renaming in 1 pass
|
|
|
|
- O3 is the same, but repeated until no further optimizations are
|
|
|
|
- possible or until 5 passes have been done (to avoid endless loops)
|
|
|
|
- * changed aopt386 so it does this looping
|
|
|
|
- * added some procedures from csopt386 to the interface because they're
|
|
|
|
- used by rropt386 as well
|
|
|
|
- * some changes to csopt386 and daopt386 so that newly added instructions
|
|
|
|
- by the CSE get optimizer info (they were simply skipped previously),
|
|
|
|
- this fixes some bugs
|
|
|
|
-
|
|
|
|
- Revision 1.5 2000/09/24 15:06:20 peter
|
|
|
|
- * use defines.inc
|
|
|
|
-
|
|
|
|
- Revision 1.4 2000/08/27 16:11:51 peter
|
|
|
|
- * moved some util functions from globals,cobjects to cutils
|
|
|
|
- * splitted files into finput,fmodule
|
|
|
|
-
|
|
|
|
- Revision 1.3 2000/07/27 13:03:36 jonas
|
|
|
|
- * release alignopts
|
|
|
|
-
|
|
|
|
- Revision 1.2 2000/07/13 11:32:44 michael
|
|
|
|
- + removed logs
|
|
|
|
-
|
|
|
|
-}
|
|
|