diff --git a/compiler/cg386con.pas b/compiler/cg386con.pas index 977ca96543..3b6bd93d59 100644 --- a/compiler/cg386con.pas +++ b/compiler/cg386con.pas @@ -37,7 +37,7 @@ interface implementation uses - cobjects,verbose, + cobjects,verbose,globals, symtable,aasm,i386, hcodegen,cgai386,temp_gen,tgeni386,cgi386; @@ -190,24 +190,32 @@ implementation getmem(pc,length(p^.values^)+3); move(p^.values^,pc^,length(p^.values^)+1); pc[length(p^.values^)+1]:=#0; -{$else UseAnsiString} - pc:=getpcharcopy(p); -{$endif UseAnsiString} - concat_constlabel(lastlabel,conststring); -{$ifdef UseAnsiString} -{$ifdef debug} - consts^.concat(new(pai_asm_comment,init('Header of ansistring'))); -{$endif debug} - consts^.concat(new(pai_const,init_32bit(p^.length))); - consts^.concat(new(pai_const,init_32bit(p^.length))); - consts^.concat(new(pai_const,init_32bit(-1))); - { to overcome this problem we set the length explicitly } - { with the ending null char } - consts^.concat(new(pai_string,init_length_pchar(pc,p^.length+1))); -{$else UseAnsiString} { we still will have a problem if there is a #0 inside the pchar } consts^.concat(new(pai_string,init_length_pchar(pc,length(p^.values^)+2))); +{$else UseAnsiString} + if cs_ansistrings in aktswitches then + begin + concat_constlabel(lastlabel,conststring); + consts^.concat(new(pai_const,init_32bit(p^.length))); + consts^.concat(new(pai_const,init_32bit(p^.length))); + consts^.concat(new(pai_const,init_32bit(-1))); + getmem(pc,p^.length+1); + move(p^.values^,pc^,p^.length+1); + { to overcome this problem we set the length explicitly } + { with the ending null char } + consts^.concat(new(pai_string,init_length_pchar(pc,p^.length+1))); + end + else + begin + getmem(pc,p^.length+3); + move(p^.values^,pc[1],p^.length+1); + pc[0]:=chr(p^.length); + concat_constlabel(lastlabel,conststring); + { to overcome this problem we set the length explicitly } + { with the ending null char } + consts^.concat(new(pai_string,init_length_pchar(pc,p^.length+2))); + end; {$endif UseAnsiString} end; end; @@ -328,7 +336,11 @@ implementation end. { $Log$ - Revision 1.5 1998-06-25 08:48:07 florian + Revision 1.6 1998-07-18 17:11:07 florian + + ansi string constants fixed + + switch $H partial implemented + + Revision 1.5 1998/06/25 08:48:07 florian * first version of rtti support Revision 1.4 1998/06/08 13:13:31 pierre diff --git a/compiler/pass_1.pas b/compiler/pass_1.pas index a3181eaefc..2f099bfcc1 100644 --- a/compiler/pass_1.pas +++ b/compiler/pass_1.pas @@ -1498,7 +1498,10 @@ unit pass_1; {why this !!! lost of dummy type definitions one per const string !!! p^.resulttype:=new(pstringdef,init(length(p^.values^)));} - p^.resulttype:=cstringdef; + if cs_ansistrings in aktswitches then + p^.resulttype:=cansistringdef + else + p^.resulttype:=cstringdef; p^.location.loc:=LOC_MEM; end; @@ -5040,7 +5043,11 @@ unit pass_1; end. { $Log$ - Revision 1.39 1998-07-14 21:46:47 peter + Revision 1.40 1998-07-18 17:11:09 florian + + ansi string constants fixed + + switch $H partial implemented + + Revision 1.39 1998/07/14 21:46:47 peter * updated messages file Revision 1.38 1998/07/14 14:46:50 peter diff --git a/compiler/pdecl.pas b/compiler/pdecl.pas index 24851fff2b..da847e99e7 100644 --- a/compiler/pdecl.pas +++ b/compiler/pdecl.pas @@ -82,6 +82,7 @@ unit pdecl; sym : psym; ps : pconstset; pd : pdouble; + sp : pstring; begin consume(_CONST); @@ -109,7 +110,15 @@ unit pdecl; end; stringconstn: {values is disposed with p so I need a copy !} +{$ifdef USEANSISTRING} begin + getmem(sp,p^.length+1); + move(p^.values^,sp^[1],p^.length); + sp^[0]:=chr(p^.length); + symtablestack^.insert(new(pconstsym,init(name,conststring,longint(sp),nil))); + end; +{$else USEANSISTRING} symtablestack^.insert(new(pconstsym,init(name,conststring,longint(stringdup(p^.values^)),nil))); +{$endif USEANSISTRING} realconstn : begin new(pd); pd^:=p^.valued; @@ -1864,7 +1873,11 @@ unit pdecl; end. { $Log$ - Revision 1.32 1998-07-14 21:46:50 peter + Revision 1.33 1998-07-18 17:11:11 florian + + ansi string constants fixed + + switch $H partial implemented + + Revision 1.32 1998/07/14 21:46:50 peter * updated messages file Revision 1.31 1998/07/14 14:46:53 peter diff --git a/compiler/pp.pas b/compiler/pp.pas index e5af04b2f8..dbddd5537b 100644 --- a/compiler/pp.pas +++ b/compiler/pp.pas @@ -36,6 +36,8 @@ MMX instructions EXTERN_MSG Don't compile the msgfiles in the compiler, always use external messagefiles + NOAG386INT no Intel Assembler output + NOAG386NSM no NASM output ----------------------------------------------------------------- Required switches for a i386 compiler be compiled by Free Pascal Compiler: @@ -106,8 +108,7 @@ uses {$ifopt o+} Overlay,ppovin, {$else} - { warn when not $O+ is used } - - You must compile with the $O+ switch + {$error You must compile with the $O+ switch} {$endif} {$endif useoverlay} {$ifdef lock} @@ -192,16 +193,22 @@ uses {$O cg386ld} {$O cg386mat} {$O cg386set} +{$ifndef NOOPT} {$O aopt386} +{$endif NOOPT} {$O cgai386} {$O i386} {$O ra386dir} {$O ra386int} {$O ra386att} {$O tgeni386} +{$ifndef NoAg386Int} {$O ag386int} +{$endif NoAg386Int} {$O ag386att} +{$ifndef NoAg386Nsm} {$O ag386nsm} +{$endif} {$endif} {$ifdef m68k} {$O opts68k} @@ -392,7 +399,11 @@ begin end. { $Log$ - Revision 1.20 1998-07-14 14:46:55 peter + Revision 1.21 1998-07-18 17:11:12 florian + + ansi string constants fixed + + switch $H partial implemented + + Revision 1.20 1998/07/14 14:46:55 peter * released NEWINPUT Revision 1.19 1998/07/07 11:20:04 peter diff --git a/compiler/switches.pas b/compiler/switches.pas index 3914eebd46..ec3aa4e6e5 100644 --- a/compiler/switches.pas +++ b/compiler/switches.pas @@ -71,7 +71,7 @@ const {E} (typesw:programglobal; setsw:cs_fp_emulation; proc:nil), {F} (typesw:unsupported; setsw:cs_none; proc:nil), {G} (typesw:unsupported; setsw:cs_none; proc:nil), - {H} (typesw:unsupported; setsw:cs_none; proc:nil), + {H} (typesw:local; setsw:cs_ansistrings; proc:nil), {I} (typesw:local; setsw:cs_iocheck; proc:nil), {J} (typesw:illegal; setsw:cs_none; proc:nil), {K} (typesw:unsupported; setsw:cs_none; proc:nil), @@ -161,7 +161,11 @@ end; end. { $Log$ - Revision 1.5 1998-06-04 23:52:00 peter + Revision 1.6 1998-07-18 17:11:13 florian + + ansi string constants fixed + + switch $H partial implemented + + Revision 1.5 1998/06/04 23:52:00 peter * m68k compiles + .def file creation moved to gendef.pas so it could also be used for win32