Prechádzať zdrojové kódy

Merged revisions 9206-9207,9348,9350,9352-9353,9364-9370,9379,9383 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r9206 | florian | 2007-11-11 22:24:55 +0100 (Sun, 11 Nov 2007) | 2 lines

o from Karl-Michael Schindler:
* brought german message file up-to-date
........
r9207 | florian | 2007-11-11 22:26:44 +0100 (Sun, 11 Nov 2007) | 1 line

* removed garbage at the end
........
r9348 | peter | 2007-11-29 22:14:47 +0100 (Thu, 29 Nov 2007) | 2 lines

* remove $ifdef extedbug for pic address check

........
r9350 | peter | 2007-11-29 22:15:22 +0100 (Thu, 29 Nov 2007) | 2 lines

* set addr_pic

........
r9352 | jonas | 2007-11-29 22:50:01 +0100 (Thu, 29 Nov 2007) | 3 lines

* fixed addr_pic check (symbol-relsymbol is also always
position-independent)

........
r9353 | jonas | 2007-11-29 23:06:14 +0100 (Thu, 29 Nov 2007) | 5 lines

* added several missing make_simple_ref() calls
* removed addr_pic again for darwin, as you have to explicitly code
the relative address using a relsym instead of using an assembler
directive like @GOT there

........
r9364 | jonas | 2007-12-01 12:28:15 +0100 (Sat, 01 Dec 2007) | 5 lines

* give a regular error message instead of an internal error on x86
when using non-PIC references in assembler code when the compiler
is configured to generate PIC code (on ppc, sparc and arm, no
error message is given at all currently)

........
r9365 | jonas | 2007-12-01 12:53:50 +0100 (Sat, 01 Dec 2007) | 2 lines

* forgot to commit in previous revision

........
r9366 | jonas | 2007-12-01 12:59:37 +0100 (Sat, 01 Dec 2007) | 4 lines

+ relsym support
* give an error message when using @GOT in darwin/i386 assembler code
(have to use a relsym instead)

........
r9367 | jonas | 2007-12-01 15:26:06 +0100 (Sat, 01 Dec 2007) | 2 lines

* check that not more than one relsymbol is used

........
r9368 | jonas | 2007-12-01 15:26:24 +0100 (Sat, 01 Dec 2007) | 2 lines

+ relsymbol support for intel asm reader

........
r9369 | jonas | 2007-12-01 15:27:45 +0100 (Sat, 01 Dec 2007) | 2 lines

+ tests for wrong relsymbol usage

........
r9370 | jonas | 2007-12-01 15:34:50 +0100 (Sat, 01 Dec 2007) | 9 lines

* fixed tests now that i386 assembler code is checked for correct PIC
usage in case PIC generation is on (some by adding PIC-versions of
the assembler code, most by adding -Cg- to the options to be used).

Note: the Intel assembler reader does not yet support the Delphi
PIC construct, so tests with that (like test/tasmread and test/tcg1)
do not work with -Cg on non-Darwin (Darwin needs a different PIC
construct)

........
r9379 | jonas | 2007-12-02 12:13:51 +0100 (Sun, 02 Dec 2007) | 5 lines

* fixed x86_64 and non-darwin i386 GOT/GOTPCREL parsing after r9366
(I put that code in a separate method because it appeared in two
places, but in one of the two places it was buggy and apparently
never triggered, and I copied that part...)

........
r9383 | peter | 2007-12-02 19:29:27 +0100 (Sun, 02 Dec 2007) | 2 lines

* don't fail on -Cg- for platforms that do not support PIC

........

git-svn-id: branches/fixes_2_2@9459 -

Jonas Maebe 18 rokov pred
rodič
commit
c47f223709
66 zmenil súbory, kde vykonal 554 pridanie a 659 odobranie
  1. 2 0
      .gitattributes
  2. 1 2
      compiler/aasmtai.pas
  3. 6 5
      compiler/i386/cgcpu.pas
  4. 3 1
      compiler/i386/n386add.pas
  5. 3 4
      compiler/m68k/ra68k.pas
  6. 21 202
      compiler/msg/errord.msg
  7. 22 203
      compiler/msg/errordu.msg
  8. 15 9
      compiler/msg/errore.msg
  9. 3 2
      compiler/msgidx.inc
  10. 148 150
      compiler/msgtxt.inc
  11. 12 6
      compiler/options.pas
  12. 6 4
      compiler/rautils.pas
  13. 2 1
      compiler/sparc/racpu.pas
  14. 3 0
      compiler/x86/nx86add.pas
  15. 28 15
      compiler/x86/rax86.pas
  16. 53 46
      compiler/x86/rax86att.pas
  17. 11 5
      compiler/x86/rax86int.pas
  18. 1 0
      tests/tbf/tb0037.pp
  19. 13 0
      tests/tbf/tb0204.pp
  20. 13 0
      tests/tbf/tb0204a.pp
  21. 1 0
      tests/tbs/tb0106.pp
  22. 1 0
      tests/tbs/tb0145.pp
  23. 1 0
      tests/tbs/tb0193.pp
  24. 1 0
      tests/tbs/tb0194.pp
  25. 1 0
      tests/tbs/tb0236.pp
  26. 1 0
      tests/tbs/tb0261.pp
  27. 1 0
      tests/tbs/tb0267.pp
  28. 1 0
      tests/tbs/tb0275.pp
  29. 1 0
      tests/tbs/tb0319.pp
  30. 1 0
      tests/tbs/tb0320.pp
  31. 1 0
      tests/tbs/tb0495.pp
  32. 25 1
      tests/test/opt/tretopt.pp
  33. 12 0
      tests/test/tasmread.pp
  34. 90 0
      tests/test/tcg1.pp
  35. 19 1
      tests/test/testsse2.pp
  36. 1 0
      tests/test/tfpu3.pp
  37. 1 0
      tests/test/tfpu4.pp
  38. 1 0
      tests/test/tfpu5.pp
  39. 1 0
      tests/webtbf/tw3931b.pp
  40. 1 0
      tests/webtbs/tw0735.pp
  41. 1 0
      tests/webtbs/tw0761.pp
  42. 1 0
      tests/webtbs/tw0892.pp
  43. 1 0
      tests/webtbs/tw0919.pp
  44. 1 0
      tests/webtbs/tw0944.pp
  45. 1 0
      tests/webtbs/tw1023.pp
  46. 1 0
      tests/webtbs/tw1066a.pp
  47. 1 0
      tests/webtbs/tw1066b.pp
  48. 1 0
      tests/webtbs/tw1090.pp
  49. 1 0
      tests/webtbs/tw1117.pp
  50. 1 0
      tests/webtbs/tw1902.pp
  51. 1 0
      tests/webtbs/tw1950.pp
  52. 1 0
      tests/webtbs/tw2323.pp
  53. 1 0
      tests/webtbs/tw2668.pp
  54. 1 0
      tests/webtbs/tw2806.pp
  55. 1 1
      tests/webtbs/tw2998.pp
  56. 1 0
      tests/webtbs/tw3093.pp
  57. 1 0
      tests/webtbs/tw3274.pp
  58. 1 0
      tests/webtbs/tw3577.pp
  59. 1 0
      tests/webtbs/tw3863.pp
  60. 1 0
      tests/webtbs/tw3931a.pp
  61. 1 0
      tests/webtbs/tw4240.pp
  62. 1 1
      tests/webtbs/tw4388.pp
  63. 1 0
      tests/webtbs/tw4450.pp
  64. 1 0
      tests/webtbs/tw5015.pp
  65. 1 0
      tests/webtbs/tw8195a.pp
  66. 1 0
      tests/webtbs/tw8195b.pp

+ 2 - 0
.gitattributes

@@ -6050,6 +6050,8 @@ tests/tbf/tb0199a.pp -text
 tests/tbf/tb0200.pp svneol=native#text/x-pascal
 tests/tbf/tb0201.pp svneol=native#text/plain
 tests/tbf/tb0202.pp svneol=native#text/plain
+tests/tbf/tb0204.pp svneol=native#text/plain
+tests/tbf/tb0204a.pp svneol=native#text/plain
 tests/tbf/ub0115.pp svneol=native#text/plain
 tests/tbf/ub0149.pp svneol=native#text/plain
 tests/tbf/ub0158a.pp svneol=native#text/plain

+ 1 - 2
compiler/aasmtai.pas

@@ -1922,12 +1922,11 @@ implementation
             if (ref^.segment<>NR_NO) and (ref^.segment<>NR_DS) then
               segprefix:=ref^.segment;
 {$endif}
-{$ifdef extdebug}
             if (cs_create_pic in current_settings.moduleswitches) and
               assigned(r.symbol) and
+              not assigned(r.relsymbol) and
               (r.refaddr=addr_no) then
               internalerror(200502052);
-{$endif}
             typ:=top_ref;
             if assigned(add_reg_instruction_hook) then
               begin

+ 6 - 5
compiler/i386/cgcpu.pas

@@ -743,8 +743,9 @@ unit cgcpu;
         tempref : treference;
       begin
         get_64bit_ops(op,op1,op2);
-        list.concat(taicpu.op_ref_reg(op1,S_L,ref,reg.reglo));
         tempref:=ref;
+        tcgx86(cg).make_simple_ref(list,tempref);
+        list.concat(taicpu.op_ref_reg(op1,S_L,tempref,reg.reglo));
         inc(tempref.offset,4);
         list.concat(taicpu.op_ref_reg(op2,S_L,tempref,reg.reghi));
       end;
@@ -807,11 +808,12 @@ unit cgcpu;
         op1,op2 : TAsmOp;
         tempref : treference;
       begin
+        tempref:=ref;
+        tcgx86(cg).make_simple_ref(list,tempref);
         case op of
           OP_AND,OP_OR,OP_XOR:
             begin
-              cg.a_op_const_ref(list,op,OS_32,aint(lo(value)),ref);
-              tempref:=ref;
+              cg.a_op_const_ref(list,op,OS_32,aint(lo(value)),tempref);
               inc(tempref.offset,4);
               cg.a_op_const_ref(list,op,OS_32,aint(hi(value)),tempref);
             end;
@@ -819,8 +821,7 @@ unit cgcpu;
             begin
               get_64bit_ops(op,op1,op2);
               // can't use a_op_const_ref because this may use dec/inc
-              list.concat(taicpu.op_const_ref(op1,S_L,aint(lo(value)),ref));
-              tempref:=ref;
+              list.concat(taicpu.op_const_ref(op1,S_L,aint(lo(value)),tempref));
               inc(tempref.offset,4);
               list.concat(taicpu.op_const_ref(op2,S_L,aint(hi(value)),tempref));
             end;

+ 3 - 1
compiler/i386/n386add.pas

@@ -44,7 +44,7 @@ interface
       aasmbase,aasmtai,aasmdata,aasmcpu,
       cgbase,procinfo,
       ncon,nset,cgutils,tgobj,
-      cga,ncgutil,cgobj,cg64f32;
+      cga,ncgutil,cgobj,cg64f32,cgx86;
 
 {*****************************************************************************
                                 Add64bit
@@ -312,6 +312,7 @@ interface
              LOC_CREFERENCE,
              LOC_REFERENCE :
                begin
+                 tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,right.location.reference);
                  href:=right.location.reference;
                  inc(href.offset,4);
                  emit_ref_reg(A_CMP,S_L,href,left.location.register64.reghi);
@@ -361,6 +362,7 @@ interface
         reg:=left.location.register
       else if left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE] then
         begin
+          tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,left.location.reference);
           ref:=left.location.reference;
           use_ref:=true;
         end

+ 3 - 4
compiler/m68k/ra68k.pas

@@ -49,11 +49,10 @@ unit ra68k;
 *****************************************************************************}
 
  function TM68kInstruction.ConcatInstruction(p : TAsmList):tai;
-   var
-     ai : taicpu;
    begin
-     ai:=taicpu(inherited ConcatInstruction(p));
-     ai.opsize:=opsize;
+     result:=inherited ConcatInstruction(p);
+     if assigned(result) then
+       taicpu(result).opsize:=opsize;
    end;
 {
  function TM68kInstruction.ConcatInstruction(p : TAsmList):tai;

+ 21 - 202
compiler/msg/errord.msg

@@ -3,7 +3,7 @@
 #   Latest updates contributed by Karl-Michael Schindler aka mischi
 #   <karl-michael.schindler at physik.uni-halle.de>
 #
-#   Based on errore.msg of SVN revision 8422
+#   Based on errore.msg of SVN revision 9149 + one
 #
 #   This file is part of the Free Pascal Compiler
 #   Copyright (c) 1998-2000 by the Free Pascal Development team
@@ -128,7 +128,7 @@ general_i_number_of_notes=01023_I_$1 Anmerkung(en) ausgegeben
 #
 # Scanner
 #
-# 02084 is the last used one
+# 02085 is the last used one
 #
 % \section{Scanner messages.}
 % This section lists the messages that the scanner emits. The scanner takes
@@ -361,7 +361,7 @@ scan_e_illegal_minfpconstprec=02085_E_"$1" ist eine ung
 #
 # Parser
 #
-# 03235 is the last used one
+# 03237 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -1124,19 +1124,6 @@ parser_e_type_object_constants=03230_E_Konstanten eines Objekts, das ein VMT ent
 parser_e_label_outside_proc=03231_E_Die Address von Labels, die ausserhalb des aktuellen Scopes definiert wurden, k”nnen nicht verwendet werden
 % It isn't allowed to take the addresss of labels outside the
 % current procedure.
-parser_f_no_anonymous_specializations=03232_F_Anonyme generische Spezialisierungen sind unzul„ssig
-% Something like
-% \begin{verbatim}
-% var
-%   MyLinkedList: specialize TLinkedList<TFixedString15>;
-% \end{verbatim}
-% is not allowed. Declare a specialized type first:
-% \begin{verbatim}
-% type
-%   TMyLinkedList = specialize TLinkedList<TFixedString15>;
-% var
-%   MyLinkedList: TMyLinkedList
-% \end{verbatim}
 parser_e_initialized_not_for_external=03233_E_Extern deklarierte Variablen k”nnen nicht intialisiert werden 
 % Variables declared as external can not be initialized with a default value.
 parser_e_illegal_function_result=03234_E_Ung�ltiger Funktionsergebnistyp
@@ -1149,6 +1136,8 @@ parser_e_no_common_type=03235_E_"$1" und "$2" haben keinen gemeinsamen Typ
 % type is then minimum..maximum.
 parser_e_no_generics_as_types=03236_E_Generische Typen k”nnen nicht ohne Spezialisierung als Typ f�r eine Variable verwendet werden
 % Generics must be always specialized before being used as variable type
+parser_w_register_list_ignored=03237_W_Registerliste wird in reinen Assemblerroutinen ignoriert
+% When using pure assembler routines, the list with modified registers is ignored.
 % \end{description}
 #
 # Type Checking
@@ -1432,7 +1421,7 @@ type_w_pointer_to_signed=04082_W_Die Konvertierung von Pointern in einen Integer
 #
 # Symtable
 #
-# 05060 is the last used one
+# 05062 is the last used one
 #
 % \section{Symbol handling}
 % This section lists all the messages that concern the handling of symbols.
@@ -1599,7 +1588,7 @@ sym_h_abstract_method_list=05062_H_Abstrakte Method "$1" gefunden
 #
 # Codegenerator
 #
-# 06040 is the last used one
+# 06049 is the last used one
 #
 % \section{Code generator messages}
 % This section lists all messages that can be displayed if the code
@@ -1721,13 +1710,16 @@ cg_f_unknown_system_type=06047_F_Systemtyp "$1" konnte nicht gefunden werden. 
 cg_h_inherited_ignored=06048_H_Geerbter Aufruf einer abstrakten Methode ignoriert
 % This messages appears only in Delphi mode when you call an abstract method
 % of a parent class via \var{inherited;}. The call is then ignored.
+cg_e_goto_label_not_found=06049_E_Goto Label "$1": Das Label ist nicht definiert oder wurde bei der Optimierung entfernt
+% The label used in the goto definition is not defined or optimized away by the
+% unreachable code elemination.
 % \end{description}
 # EndOfTeX
 
 #
 # Assembler reader
 #
-# 07105 is the last used one
+# 07106 is the last used one
 #
 asmr_d_start_reading=07000_DL_Starte $1 Stil Assembler Parsen
 % This informs you that an assembler block is being parsed
@@ -1972,7 +1964,7 @@ asmr_e_no_vmtoffset_possible=07106_E_VMTOffset muss in Kombination mit einer vir
 #
 # Assembler/binary writers
 #
-# 08018 is the last used one
+# 08020 is the last used one
 #
 asmw_f_too_many_asm_files=08000_F_Zu viele Assembler-Dateien
 % With smartlinking enabled, there are too many assembler
@@ -2003,7 +1995,7 @@ asmw_e_64bit_not_supported=08021_E_Asm: 64 Bit Operanden werden nicht unterst
 #
 # Executing linker/assembler
 #
-# 09034 is the last used one
+# 09028 is the last used one
 #
 # BeginOfTeX
 %
@@ -2089,6 +2081,8 @@ exec_d_resbin_params=09028_D_Resource Compiler "$1" wird mit "$2" als Kommandoze
 #
 # Executable information
 #
+# 09134 is the last used one
+#
 # BeginOfTeX
 % \section{Executable information messages.}
 % This section lists all messages that the compiler emits when an executable program is produced,
@@ -2114,7 +2108,7 @@ execinfo_x_stackcommit=09134_X_Stack Bereich "committed": $1 Bytes
 #
 # Unit loading
 #
-# 10041 is the last used one
+# 10059 is the last used one
 #
 # BeginOfTeX
 % \section{Unit loading messages.}
@@ -2507,7 +2501,8 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **2Ch<n>_<n> Bytes Heap (zwischen 1023 und 67107840)
 **2Ci_I/O-Pr�fung
 **2Cn_Lasse die Linkstufe aus
-**2Co_Pr�fe šberlauf von Integer-Operationen
+**2Co_Pr�fe auf šberlauf von Integer-Operationen
+**2CO_Pr�fe auf m”glichen šberlauf von Integer-Operationen
 **2Cp<x>_W„hle instruction set aus, siehe fpc -i wegen m”glicher Werte
 **2CP<x>=<y>_ Einstellungen f�r packing
 **3CPPACKSET=<y>_ <y> Belegung von Sets: 0, 1 oder DEFAULT oder NORMAL, 2, 4 und 8
@@ -2625,6 +2620,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 3*2Topenbsd_OpenBSD
 3*2Tos2_OS/2 / eComStation
 3*2Tsunos_SunOS/Solaris
+3*2Tsymbian_Symbian OS
 3*2Twatcom_Watcom compatible DOS extender
 3*2Twdosx_WDOSX DOS extender
 3*2Twin32_Windows 32 Bit
@@ -2664,7 +2660,7 @@ S*2Tlinux_Linux
 P*2Wb_Erzeuge statt einer Bibliothek ein Bundle (Darwin)
 p*2Wb_Erzeuge statt einer Bibliothek ein Bundle (Darwin)
 3*2WB_Erzeuge ein relozierbares Image
-3*2WB<x>_Setze die Image base auf den Hexadecimal Wert <x>
+3*2WB<x>_Setze die Image base auf den Hexadezimal Wert <x>
 3*2WC_Spezifiziere "console type application"
 3*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren
 3*2WF_Spezifiziere "full-screen type application" (nur OS/2)
@@ -2684,6 +2680,7 @@ P*2WT_Spezifiziere "tool type application"    (MPW tool, nur Mac OS)
 **2XM<x>_Setze den Namen der 'main' program Routine   (default ist 'main')
 **2XP<x>_Stelle den Namen der Compiler-Hilfsprogrammen den Prefix <x> voran
 **2Xr<x>_Setze den Bibliotheks-Suchpfad zu <x>       (ben”tigt f�r cross compile)
+**2XR<x>_Stelle allen Linker-Suchpfaden den Namen <x> voran (BeOS, Darwin, FreeBSD, Linux, Mac OS, Solaris)
 **2Xs_Entferne alle Symbole von ausf�hrbarer Datei
 **2XS_Versuche Units statisch zu linken (default)    (definiert FPC_LINK_STATIC)
 **2Xt_Linke mit statischen Bibliotheken              (-static wird an den Linker �bergeben)
@@ -2696,181 +2693,3 @@ P*2WT_Spezifiziere "tool type application"    (MPW tool, nur Mac OS)
 #
 # The End...
 #
-%%% scan_n_far_directive_ignored=02006_N_$F Direktive (FAR) ignoriert
-% The \var{FAR} directive is a 16-bit construction which is recorgnised
-% but ignored by the compiler, since it produces 32 bit code.
-%%% scan_n_stack_check_global_under_linux=02007_N_Stackpr�fung ist unter Linux global
-% Stack checking with the \var{-Cs} switch is ignored under \linux, since
-% \linux does this for you. Only displayed when \var{-vn} is used.
-%%% scan_e_too_much_endifs=02014_E_Zu viele $ENDIF oder $ELSE Direktiven
-% Your \var{\{\$IFDEF ..\}} and {\{\$ENDIF\}} statements aren't balanced.
-%%% scan_e_wrong_styled_switch=02031_E_Compilerschalter in (* ... *)-Kommentaren sind nicht erlaubt
-% Compiler switches should always be between \var{\{ \}} comment delimiters.
-%%% scan_w_decription_not_support=02046_W_DESCRIPTION kann nur bei OS/2- und Windows-Programmen verwendet werden
-% The \var{\{\$DESCRIPTION\}} directive is only supported for OS2 and Win32 targets.
-%%% scan_w_unsupported_asmmode_specifier=02050_W_Nicht unterst�tzter Assemblermodus $1 angegeben
-% When you specify an assembler mode with the \var{\{\$ASMMODE xxx\}}
-% the compiler didn't recognize the mode you specified.
-%%% parser_w_proc_far_ignored=03001_W_Schl�sselwort FAR wurde ignoriert
-% This is a warning. \var{FAR} is a construct for 8 or 16 bit programs. Since
-% the compile generates 32 bit programs, it ignores this directive.
-%%% parser_w_proc_near_ignored=03002_W_Schl�sselwort NEAR wurde ignoriert
-% This is a warning. \var{NEAR} is a construct for 8 or 16 bit programs. Since
-% the compile generates 32 bit programs, it ignores this directive.
-%%% parser_w_proc_interrupt_ignored=03003_W_Ignoriere Prozedurtyp INTERRUPT
-% This is a warning. \var{INTERRUPT} is a i386 specific construct
-% and is igonred for other processors.
-%%% parser_e_no_dll_file_specified=03007_E_Keine DLL-Datei angegeben
-% No longer in use.
-%%% parser_e_illegal_open_parameter=03015_E_Ung�ltiger Open-Parameter
-% You are trying to use the wrong type for an open parameter.
-%%% parser_w_priv_meth_not_virtual=03017_W_Private Methoden d�rfen nicht VIRTUAL sein
-% You declared a method in the private part of a object (class) as
-% \var{virtual}. This is not allowed. Private methods cannot be overridden
-% anyway.
-%%% parser_object_has_no_vmt=03023_E_Das Objekt $1 hat keine VMT
-%%% parser_e_wrong_parameter_type=03025_E_Falscher Parametertyp angegeben f�r Argument Nr. $1
-% There is an error in the parameter list of the function or procedure.
-% The compiler cannot determine the error more accurate than this.
-%%% parser_n_interface_name_diff_implementation_name=03032_N_Namen in Interface und Implementation sind verschieden!
-% This note warns you if the implementation and interface names of a
-% functions are different, but they have the same mangled name. This
-% is important when using overloaded functions (but should produce no error).
-%%% parser_p_procedure_start=03049_P_Prozedur/Funktion $1
-% When using the \var{-vp} switch, the compiler tells you when it starts
-% processing a procedure or function implementation.
-%%% parser_w_overloaded_are_not_both_virtual=03064_W_Overload-Methode einer virtuellen Methode muss auch virtuell sein: $1
-% If you declare overloaded methods in a class, then they should either all be
-% virtual, or none. You shouldn't mix them.
-%%% parser_w_overloaded_are_not_both_non_virtual=03065_W_Overload-Methode einer nicht-virtuellen Methode muss auch nicht-virtuell sein: $1
-% If you declare overloaded methods in a class, then they should either all be
-% virtual, or none. You shouldn't mix them.
-%%% parser_e_overloaded_methodes_not_same_ret=03066_E_Overload-Methoden, die virtuell sind, m�ssen den gleichen R�ckgabetyp haben: $1
-% If you declare virtual overloaded methods in a class definition, they must
-% have the same return type.
-%%% parser_e_asm_incomp_with_function_return=03087_E_Assembler-Funktion nicht mit diesem R�ckgabetyp m”glich
-% You're trying to implement a \var{assembler} function, but the return type
-% of the function doesn't allow that.
-%%% parser_m_macro_defined=03101_M_Makro definiert: $1
-% When \var{-vm} is used, the compiler tells you when it defines macros.
-%%% parser_m_macro_undefined=03102_M_Makro gel”scht: $1
-% When \var{-vm} is used, the compiler tells you when it undefines macros.
-%%% parser_m_macro_set_to=03103_M_Makro $1 auf $2 gesetzt
-% When \var{-vm} is used, the compiler tells you what values macros get.
-%%% parser_e_no_paras_allowed=03108_E_Array-Eigenschaften sind an dieser Stelle nicht erlaubt
-% You cannot use array properties at that point.
-%%% parser_e_name_keyword_expected=03122_E_Schl�sselwort NAME erwartet
-% The definition of an external variable needs a \var{name} clause.
-%%% parser_e_register_calling_not_supported=03130_E_Register-Aufrufkonvention (fastcall) nicht unterst�tzt
-% The \var{register} calling convention, i.e., arguments are passed in
-% registers instead of on the stack is not supported. Arguments are always
-% passed on the stack.
-%%% parser_w_empty_import_name=03135_W_Leerer Importname angegeben
-% Both index and name for the import are 0 or empty
-%%% parser_e_used_proc_name_changed=03137_E_Funktionsinterner Name hat sich nach der Verwendung einer Funktion ge„ndert
-% This is an internal error; please report any occurrences of this error
-% to the \fpc team.
-%%% type_e_varid_or_typeid_expected=04010_E_Variable oder Typbezeichner erwartet
-% The argument to the \var{High} or \var{Low} function is not a variable
-% nor a type identifier.
-%%% sym_f_id_already_typed=05006_F_Bezeichnertyp ist bereits als Typ definiert
-% You are trying to redefine a type.
-%%% sym_e_type_id_not_defined=05008_E_Typbezeichner nicht definiert
-% The type identifier has not been defined yet.
-%%% sym_e_invalid_call_tvarsymmangledname=05011_E_Ung�ltiger Aufruf von tvarsym.mangledname()
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% sym_b_param_list=05039_B_Deklaration gefunden: $1
-% You get this when you use the \var{-vb} switch. In case an overloaded
-% procedure is not found, then all candidate overloaded procedures are
-% listed, with their parameter lists.
-%%% cg_e_too_complex_expr=06002_E_Ausdruck zu komplex - FPU Stack�berlauf
-% Your expression is too long for the compiler. You should try dividing the
-% construct over multiple assignments.
-%%% cg_e_illegal_expression=06003_E_Ung�ltiger Ausdruck
-% This can occur under many circumstances. Mostly when trying to evaluate
-% constant expressions.
-%%% cg_e_invalid_integer=06004_E_Ung�ltiger Ausdruck, kein Integer
-% You made an expression which isn't an integer, and the compiler expects the
-% result to be an integer.
-%%% cg_e_invalid_qualifier=06005_E_Ung�ltige Kombination
-% One of the following is happening :
-% \begin{itemize}
-% \item You're trying to access a field of a variable that is not a record.
-% \item You're indexing a variable that is not an array.
-% \item You're dereferencing a variable that is not a pointer.
-% \end{itemize}
-%%% cg_e_upper_lower_than_lower=06006_E_Oberes Bereichsende < unteres Bereichsende
-% You are declaring a subrange, and the lower limit is higher than the high
-% limit of the range.
-%%% cg_e_illegal_count_var=06007_E_Unzul„ssige Z„hlvariable
-% The type of a \var{for} loop variable must be an ordinal type.
-% Loop variables cannot be reals or strings.
-%%% cg_e_cant_choose_overload_function=06008_E_Kann mich bestimmen, welche �berladene Funktion aufgerufen werden soll
-% You're calling overloaded functions with a parameter that doesn't correspond
-% to any of the declared function parameter lists. e.g. when you have declared
-% a function with parameters \var{word} and \var{longint}, and then you call
-% it with a parameter which is of type \var{integer}.
-%%% cg_e_illegal_type_conversion=06010_E_Unzul„ssige Typumwandlung: "$1" in "$2"
-% When doing a type-cast, you must take care that the sizes of the variable and
-% the destination type are the same.
-%%% cg_d_pointer_to_longint_conv_not_portable=06011_D_Umwandlung zwischen ganzen Zahlen und Pointern ist zwischen verschiedenen Plattformen nicht portabel
-% If you typecast a pointer to a longint, this code will not compile
-% on a machine using 64bit for pointer storage.
-%%% cg_e_var_must_be_reference=06014_E_Unzul„ssiger "call by reference"-Parameter
-% You are trying to pass a constant or an expression to a procedure that
-% requires a \var{var} parameter. Only variables can be passed as a \var{var}
-% parameter.
-%%% cg_e_stackframe_with_esp=06019_E_Prozeduraufruf mit Stackframe ESP/SP
-% The compiler enocountered a procedure or function call inside a
-% procedure that uses a \var{ESP/SP} stackframe. Normally, when a call is
-% done the procedure needs a \var{EBP} stackframe.
-%%% cg_f_internal_error_in_getfloatreg=06021_F_Interner Fehler in getfloatreg(), Allozierungsfehler
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_f_unknown_float_type=06022_F_Unbekannter Fliesskommatyp
-% The compiler cannot determine the kind of float that occurs in an expression.
-%%% cg_f_secondvecn_base_defined_twice=06023_F_SecondVecn() Basis wurde zweimal definiert
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_f_extended_cg68k_not_supported=06024_F_Extended wird auf der m68k-Plattform nicht unterst�tzt
-% The var{extended} type is not supported on the m68k platform.
-%%% cg_f_32bit_not_supported_in_68000=06025_F_Vorzeichenlose 32-Bit-Typen werden im MC68000-Modus nicht unterst�zt
-% The cardinal/dword is not supported on the m68k platform.
-%%% cg_f_internal_error_in_secondinline=06026_F_Interner Fehler in secondinline()
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_e_stacklimit_in_local_routine=06028_E_Stacklimit in lokaler Routine �berschritten
-% Your code requires a too big stack. Some operating systems pose limits
-% on the stack size. You should use less variables or try ro put large
-% variables on the heap.
-%%% cg_w_64bit_range_check_not_supported=06030_W_Bereichs�berpr�fung f�r 64-Bit-Integer wird f�r die Zielplattform nicht unterst�tzt
-% 64 bit range check is not yet implemented for 32 bit processors.
-%%% cg_e_no_call_to_interrupt=06034_E_Direkter Aufruf von Interruptprozedur $1 ist nicht m”glich
-% You can not call an interrupt procedure directly from FPC code
-%%% cg_e_include_not_implemented=06036_E_Include und Exclude sind f�r diesen Fall noch nicht implementiert
-% \var{include} and \var{exclude} are only partially
-% implemented for \var{i386} processors
-% and not at all for \var{m68k} processors.
-%%% asmr_w_override_op_not_supported=07003_W_Override-Operator wird nicht unterst�tzt
-% The Override operator is not supported
-%%% asmr_e_nor_not_supported=07065_E_NOR nicht unterst�tzt
-%%% exec_w_assembler_not_found=09005_W_Assembler $1 nicht gefunden, schalte um auf externes Assemblieren
-%%% exec_w_error_while_assembling=09007_W_Fehler w„hren des Assemblierens, Exitcode $1
-%%% exec_w_cant_call_assembler=09008_W_Kann den Assembler nicht aufrufen, Fehler $1 beim Umschalten auf externen Assembler
-%%% exec_w_error_while_linking=09013_W_Fehler w„hrend des Linkens
-%%% exec_w_cant_call_linker=09014_W_Kann Linker nicht aufrufen, schalte um auf externes Linken
-%%% exec_w_util_not_found=09016_W_Hilfsprogramm "$1" nicht gefunden, schalte um auf externes Linken
-%%% exec_w_res_not_found=09021_W_Resource Compiler nicht gefunden, schalte um auf externen Modus
-%%% unit_u_start_parse_interface=10034_U_Parse Interface-Abschnitt von "$1"
-% When you use the \var{-vu} flag, the compiler warns that it starts
-% parsing the interface part of the unit
-%%% unit_u_start_parse_implementation=10035_U_Parse Implementation-Abschnitt von "$1"
-% When you use the \var{-vu} flag, the compiler warns that it starts
-% parsing the implementation part of the unit
-%%% option_defining_symbol=11037_D_Symbol $1 wird definiert
-%%% option_undefining_symbol=11038_D_Definition des Symbols $1 wird entfernt

+ 22 - 203
compiler/msg/errordu.msg

@@ -1,9 +1,9 @@
-#
+#
 #   German (UTF-8) Language File for Free Pascal
 #   Latest updates contributed by Karl-Michael Schindler aka mischi
 #   <karl-michael.schindler at physik.uni-halle.de>
 #
-#   Based on errore.msg of SVN revision 8422
+#   Based on errore.msg of SVN revision 9149 + one
 #
 #   This file is part of the Free Pascal Compiler
 #   Copyright (c) 1998-2000 by the Free Pascal Development team
@@ -128,7 +128,7 @@ general_i_number_of_notes=01023_I_$1 Anmerkung(en) ausgegeben
 #
 # Scanner
 #
-# 02084 is the last used one
+# 02085 is the last used one
 #
 % \section{Scanner messages.}
 % This section lists the messages that the scanner emits. The scanner takes
@@ -361,7 +361,7 @@ scan_e_illegal_minfpconstprec=02085_E_"$1" ist eine ungültige minimale Präzisi
 #
 # Parser
 #
-# 03235 is the last used one
+# 03237 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -1124,19 +1124,6 @@ parser_e_type_object_constants=03230_E_Konstanten eines Objekts, das ein VMT ent
 parser_e_label_outside_proc=03231_E_Die Address von Labels, die ausserhalb des aktuellen Scopes definiert wurden, können nicht verwendet werden
 % It isn't allowed to take the addresss of labels outside the
 % current procedure.
-parser_f_no_anonymous_specializations=03232_F_Anonyme generische Spezialisierungen sind unzulässig
-% Something like
-% \begin{verbatim}
-% var
-%   MyLinkedList: specialize TLinkedList<TFixedString15>;
-% \end{verbatim}
-% is not allowed. Declare a specialized type first:
-% \begin{verbatim}
-% type
-%   TMyLinkedList = specialize TLinkedList<TFixedString15>;
-% var
-%   MyLinkedList: TMyLinkedList
-% \end{verbatim}
 parser_e_initialized_not_for_external=03233_E_Extern deklarierte Variablen können nicht intialisiert werden 
 % Variables declared as external can not be initialized with a default value.
 parser_e_illegal_function_result=03234_E_Ungültiger Funktionsergebnistyp
@@ -1149,6 +1136,8 @@ parser_e_no_common_type=03235_E_"$1" und "$2" haben keinen gemeinsamen Typ
 % type is then minimum..maximum.
 parser_e_no_generics_as_types=03236_E_Generische Typen können nicht ohne Spezialisierung als Typ für eine Variable verwendet werden
 % Generics must be always specialized before being used as variable type
+parser_w_register_list_ignored=03237_W_Registerliste wird in reinen Assemblerroutinen ignoriert
+% When using pure assembler routines, the list with modified registers is ignored.
 % \end{description}
 #
 # Type Checking
@@ -1432,7 +1421,7 @@ type_w_pointer_to_signed=04082_W_Die Konvertierung von Pointern in einen Integer
 #
 # Symtable
 #
-# 05060 is the last used one
+# 05062 is the last used one
 #
 % \section{Symbol handling}
 % This section lists all the messages that concern the handling of symbols.
@@ -1599,7 +1588,7 @@ sym_h_abstract_method_list=05062_H_Abstrakte Method "$1" gefunden
 #
 # Codegenerator
 #
-# 06040 is the last used one
+# 06049 is the last used one
 #
 % \section{Code generator messages}
 % This section lists all messages that can be displayed if the code
@@ -1721,13 +1710,16 @@ cg_f_unknown_system_type=06047_F_Systemtyp "$1" konnte nicht gefunden werden. Ü
 cg_h_inherited_ignored=06048_H_Geerbter Aufruf einer abstrakten Methode ignoriert
 % This messages appears only in Delphi mode when you call an abstract method
 % of a parent class via \var{inherited;}. The call is then ignored.
+cg_e_goto_label_not_found=06049_E_Goto Label "$1": Das Label ist nicht definiert oder wurde bei der Optimierung entfernt
+% The label used in the goto definition is not defined or optimized away by the
+% unreachable code elemination.
 % \end{description}
 # EndOfTeX
 
 #
 # Assembler reader
 #
-# 07105 is the last used one
+# 07106 is the last used one
 #
 asmr_d_start_reading=07000_DL_Starte $1 Stil Assembler Parsen
 % This informs you that an assembler block is being parsed
@@ -1972,7 +1964,7 @@ asmr_e_no_vmtoffset_possible=07106_E_VMTOffset muss in Kombination mit einer vir
 #
 # Assembler/binary writers
 #
-# 08018 is the last used one
+# 08020 is the last used one
 #
 asmw_f_too_many_asm_files=08000_F_Zu viele Assembler-Dateien
 % With smartlinking enabled, there are too many assembler
@@ -2003,7 +1995,7 @@ asmw_e_64bit_not_supported=08021_E_Asm: 64 Bit Operanden werden nicht unterstüt
 #
 # Executing linker/assembler
 #
-# 09034 is the last used one
+# 09028 is the last used one
 #
 # BeginOfTeX
 %
@@ -2089,6 +2081,8 @@ exec_d_resbin_params=09028_D_Resource Compiler "$1" wird mit "$2" als Kommandoze
 #
 # Executable information
 #
+# 09134 is the last used one
+#
 # BeginOfTeX
 % \section{Executable information messages.}
 % This section lists all messages that the compiler emits when an executable program is produced,
@@ -2114,7 +2108,7 @@ execinfo_x_stackcommit=09134_X_Stack Bereich "committed": $1 Bytes
 #
 # Unit loading
 #
-# 10041 is the last used one
+# 10059 is the last used one
 #
 # BeginOfTeX
 % \section{Unit loading messages.}
@@ -2507,7 +2501,8 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **2Ch<n>_<n> Bytes Heap (zwischen 1023 und 67107840)
 **2Ci_I/O-Prüfung
 **2Cn_Lasse die Linkstufe aus
-**2Co_Prüfe Überlauf von Integer-Operationen
+**2Co_Prüfe auf Überlauf von Integer-Operationen
+**2CO_Prüfe auf möglichen Überlauf von Integer-Operationen
 **2Cp<x>_Wähle instruction set aus, siehe fpc -i wegen möglicher Werte
 **2CP<x>=<y>_ Einstellungen für packing
 **3CPPACKSET=<y>_ <y> Belegung von Sets: 0, 1 oder DEFAULT oder NORMAL, 2, 4 und 8
@@ -2625,6 +2620,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 3*2Topenbsd_OpenBSD
 3*2Tos2_OS/2 / eComStation
 3*2Tsunos_SunOS/Solaris
+3*2Tsymbian_Symbian OS
 3*2Twatcom_Watcom compatible DOS extender
 3*2Twdosx_WDOSX DOS extender
 3*2Twin32_Windows 32 Bit
@@ -2664,7 +2660,7 @@ S*2Tlinux_Linux
 P*2Wb_Erzeuge statt einer Bibliothek ein Bundle (Darwin)
 p*2Wb_Erzeuge statt einer Bibliothek ein Bundle (Darwin)
 3*2WB_Erzeuge ein relozierbares Image
-3*2WB<x>_Setze die Image base auf den Hexadecimal Wert <x>
+3*2WB<x>_Setze die Image base auf den Hexadezimal Wert <x>
 3*2WC_Spezifiziere "console type application"
 3*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren
 3*2WF_Spezifiziere "full-screen type application" (nur OS/2)
@@ -2684,6 +2680,7 @@ P*2WT_Spezifiziere "tool type application"    (MPW tool, nur Mac OS)
 **2XM<x>_Setze den Namen der 'main' program Routine   (default ist 'main')
 **2XP<x>_Stelle den Namen der Compiler-Hilfsprogrammen den Prefix <x> voran
 **2Xr<x>_Setze den Bibliotheks-Suchpfad zu <x>       (benötigt für cross compile)
+**2XR<x>_Stelle allen Linker-Suchpfaden den Namen <x> voran (BeOS, Darwin, FreeBSD, Linux, Mac OS, Solaris)
 **2Xs_Entferne alle Symbole von ausführbarer Datei
 **2XS_Versuche Units statisch zu linken (default)    (definiert FPC_LINK_STATIC)
 **2Xt_Linke mit statischen Bibliotheken              (-static wird an den Linker übergeben)
@@ -2696,181 +2693,3 @@ P*2WT_Spezifiziere "tool type application"    (MPW tool, nur Mac OS)
 #
 # The End...
 #
-%%% scan_n_far_directive_ignored=02006_N_$F Direktive (FAR) ignoriert
-% The \var{FAR} directive is a 16-bit construction which is recorgnised
-% but ignored by the compiler, since it produces 32 bit code.
-%%% scan_n_stack_check_global_under_linux=02007_N_Stackprüfung ist unter Linux global
-% Stack checking with the \var{-Cs} switch is ignored under \linux, since
-% \linux does this for you. Only displayed when \var{-vn} is used.
-%%% scan_e_too_much_endifs=02014_E_Zu viele $ENDIF oder $ELSE Direktiven
-% Your \var{\{\$IFDEF ..\}} and {\{\$ENDIF\}} statements aren't balanced.
-%%% scan_e_wrong_styled_switch=02031_E_Compilerschalter in (* ... *)-Kommentaren sind nicht erlaubt
-% Compiler switches should always be between \var{\{ \}} comment delimiters.
-%%% scan_w_decription_not_support=02046_W_DESCRIPTION kann nur bei OS/2- und Windows-Programmen verwendet werden
-% The \var{\{\$DESCRIPTION\}} directive is only supported for OS2 and Win32 targets.
-%%% scan_w_unsupported_asmmode_specifier=02050_W_Nicht unterstützter Assemblermodus $1 angegeben
-% When you specify an assembler mode with the \var{\{\$ASMMODE xxx\}}
-% the compiler didn't recognize the mode you specified.
-%%% parser_w_proc_far_ignored=03001_W_Schlüsselwort FAR wurde ignoriert
-% This is a warning. \var{FAR} is a construct for 8 or 16 bit programs. Since
-% the compile generates 32 bit programs, it ignores this directive.
-%%% parser_w_proc_near_ignored=03002_W_Schlüsselwort NEAR wurde ignoriert
-% This is a warning. \var{NEAR} is a construct for 8 or 16 bit programs. Since
-% the compile generates 32 bit programs, it ignores this directive.
-%%% parser_w_proc_interrupt_ignored=03003_W_Ignoriere Prozedurtyp INTERRUPT
-% This is a warning. \var{INTERRUPT} is a i386 specific construct
-% and is igonred for other processors.
-%%% parser_e_no_dll_file_specified=03007_E_Keine DLL-Datei angegeben
-% No longer in use.
-%%% parser_e_illegal_open_parameter=03015_E_Ungültiger Open-Parameter
-% You are trying to use the wrong type for an open parameter.
-%%% parser_w_priv_meth_not_virtual=03017_W_Private Methoden dürfen nicht VIRTUAL sein
-% You declared a method in the private part of a object (class) as
-% \var{virtual}. This is not allowed. Private methods cannot be overridden
-% anyway.
-%%% parser_object_has_no_vmt=03023_E_Das Objekt $1 hat keine VMT
-%%% parser_e_wrong_parameter_type=03025_E_Falscher Parametertyp angegeben für Argument Nr. $1
-% There is an error in the parameter list of the function or procedure.
-% The compiler cannot determine the error more accurate than this.
-%%% parser_n_interface_name_diff_implementation_name=03032_N_Namen in Interface und Implementation sind verschieden!
-% This note warns you if the implementation and interface names of a
-% functions are different, but they have the same mangled name. This
-% is important when using overloaded functions (but should produce no error).
-%%% parser_p_procedure_start=03049_P_Prozedur/Funktion $1
-% When using the \var{-vp} switch, the compiler tells you when it starts
-% processing a procedure or function implementation.
-%%% parser_w_overloaded_are_not_both_virtual=03064_W_Overload-Methode einer virtuellen Methode muss auch virtuell sein: $1
-% If you declare overloaded methods in a class, then they should either all be
-% virtual, or none. You shouldn't mix them.
-%%% parser_w_overloaded_are_not_both_non_virtual=03065_W_Overload-Methode einer nicht-virtuellen Methode muss auch nicht-virtuell sein: $1
-% If you declare overloaded methods in a class, then they should either all be
-% virtual, or none. You shouldn't mix them.
-%%% parser_e_overloaded_methodes_not_same_ret=03066_E_Overload-Methoden, die virtuell sind, müssen den gleichen Rückgabetyp haben: $1
-% If you declare virtual overloaded methods in a class definition, they must
-% have the same return type.
-%%% parser_e_asm_incomp_with_function_return=03087_E_Assembler-Funktion nicht mit diesem Rückgabetyp möglich
-% You're trying to implement a \var{assembler} function, but the return type
-% of the function doesn't allow that.
-%%% parser_m_macro_defined=03101_M_Makro definiert: $1
-% When \var{-vm} is used, the compiler tells you when it defines macros.
-%%% parser_m_macro_undefined=03102_M_Makro gelöscht: $1
-% When \var{-vm} is used, the compiler tells you when it undefines macros.
-%%% parser_m_macro_set_to=03103_M_Makro $1 auf $2 gesetzt
-% When \var{-vm} is used, the compiler tells you what values macros get.
-%%% parser_e_no_paras_allowed=03108_E_Array-Eigenschaften sind an dieser Stelle nicht erlaubt
-% You cannot use array properties at that point.
-%%% parser_e_name_keyword_expected=03122_E_Schlüsselwort NAME erwartet
-% The definition of an external variable needs a \var{name} clause.
-%%% parser_e_register_calling_not_supported=03130_E_Register-Aufrufkonvention (fastcall) nicht unterstützt
-% The \var{register} calling convention, i.e., arguments are passed in
-% registers instead of on the stack is not supported. Arguments are always
-% passed on the stack.
-%%% parser_w_empty_import_name=03135_W_Leerer Importname angegeben
-% Both index and name for the import are 0 or empty
-%%% parser_e_used_proc_name_changed=03137_E_Funktionsinterner Name hat sich nach der Verwendung einer Funktion geändert
-% This is an internal error; please report any occurrences of this error
-% to the \fpc team.
-%%% type_e_varid_or_typeid_expected=04010_E_Variable oder Typbezeichner erwartet
-% The argument to the \var{High} or \var{Low} function is not a variable
-% nor a type identifier.
-%%% sym_f_id_already_typed=05006_F_Bezeichnertyp ist bereits als Typ definiert
-% You are trying to redefine a type.
-%%% sym_e_type_id_not_defined=05008_E_Typbezeichner nicht definiert
-% The type identifier has not been defined yet.
-%%% sym_e_invalid_call_tvarsymmangledname=05011_E_Ungültiger Aufruf von tvarsym.mangledname()
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% sym_b_param_list=05039_B_Deklaration gefunden: $1
-% You get this when you use the \var{-vb} switch. In case an overloaded
-% procedure is not found, then all candidate overloaded procedures are
-% listed, with their parameter lists.
-%%% cg_e_too_complex_expr=06002_E_Ausdruck zu komplex - FPU Stacküberlauf
-% Your expression is too long for the compiler. You should try dividing the
-% construct over multiple assignments.
-%%% cg_e_illegal_expression=06003_E_Ungültiger Ausdruck
-% This can occur under many circumstances. Mostly when trying to evaluate
-% constant expressions.
-%%% cg_e_invalid_integer=06004_E_Ungültiger Ausdruck, kein Integer
-% You made an expression which isn't an integer, and the compiler expects the
-% result to be an integer.
-%%% cg_e_invalid_qualifier=06005_E_Ungültige Kombination
-% One of the following is happening :
-% \begin{itemize}
-% \item You're trying to access a field of a variable that is not a record.
-% \item You're indexing a variable that is not an array.
-% \item You're dereferencing a variable that is not a pointer.
-% \end{itemize}
-%%% cg_e_upper_lower_than_lower=06006_E_Oberes Bereichsende < unteres Bereichsende
-% You are declaring a subrange, and the lower limit is higher than the high
-% limit of the range.
-%%% cg_e_illegal_count_var=06007_E_Unzulässige Zählvariable
-% The type of a \var{for} loop variable must be an ordinal type.
-% Loop variables cannot be reals or strings.
-%%% cg_e_cant_choose_overload_function=06008_E_Kann mich bestimmen, welche überladene Funktion aufgerufen werden soll
-% You're calling overloaded functions with a parameter that doesn't correspond
-% to any of the declared function parameter lists. e.g. when you have declared
-% a function with parameters \var{word} and \var{longint}, and then you call
-% it with a parameter which is of type \var{integer}.
-%%% cg_e_illegal_type_conversion=06010_E_Unzulässige Typumwandlung: "$1" in "$2"
-% When doing a type-cast, you must take care that the sizes of the variable and
-% the destination type are the same.
-%%% cg_d_pointer_to_longint_conv_not_portable=06011_D_Umwandlung zwischen ganzen Zahlen und Pointern ist zwischen verschiedenen Plattformen nicht portabel
-% If you typecast a pointer to a longint, this code will not compile
-% on a machine using 64bit for pointer storage.
-%%% cg_e_var_must_be_reference=06014_E_Unzulässiger "call by reference"-Parameter
-% You are trying to pass a constant or an expression to a procedure that
-% requires a \var{var} parameter. Only variables can be passed as a \var{var}
-% parameter.
-%%% cg_e_stackframe_with_esp=06019_E_Prozeduraufruf mit Stackframe ESP/SP
-% The compiler enocountered a procedure or function call inside a
-% procedure that uses a \var{ESP/SP} stackframe. Normally, when a call is
-% done the procedure needs a \var{EBP} stackframe.
-%%% cg_f_internal_error_in_getfloatreg=06021_F_Interner Fehler in getfloatreg(), Allozierungsfehler
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_f_unknown_float_type=06022_F_Unbekannter Fliesskommatyp
-% The compiler cannot determine the kind of float that occurs in an expression.
-%%% cg_f_secondvecn_base_defined_twice=06023_F_SecondVecn() Basis wurde zweimal definiert
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_f_extended_cg68k_not_supported=06024_F_Extended wird auf der m68k-Plattform nicht unterstützt
-% The var{extended} type is not supported on the m68k platform.
-%%% cg_f_32bit_not_supported_in_68000=06025_F_Vorzeichenlose 32-Bit-Typen werden im MC68000-Modus nicht unterstüzt
-% The cardinal/dword is not supported on the m68k platform.
-%%% cg_f_internal_error_in_secondinline=06026_F_Interner Fehler in secondinline()
-% An internal error occurred in the compiler; If you encounter such an error,
-% please contact the developers and try to provide an exact description of
-% the circumstances in which the error occurs.
-%%% cg_e_stacklimit_in_local_routine=06028_E_Stacklimit in lokaler Routine überschritten
-% Your code requires a too big stack. Some operating systems pose limits
-% on the stack size. You should use less variables or try ro put large
-% variables on the heap.
-%%% cg_w_64bit_range_check_not_supported=06030_W_Bereichsüberprüfung für 64-Bit-Integer wird für die Zielplattform nicht unterstützt
-% 64 bit range check is not yet implemented for 32 bit processors.
-%%% cg_e_no_call_to_interrupt=06034_E_Direkter Aufruf von Interruptprozedur $1 ist nicht möglich
-% You can not call an interrupt procedure directly from FPC code
-%%% cg_e_include_not_implemented=06036_E_Include und Exclude sind für diesen Fall noch nicht implementiert
-% \var{include} and \var{exclude} are only partially
-% implemented for \var{i386} processors
-% and not at all for \var{m68k} processors.
-%%% asmr_w_override_op_not_supported=07003_W_Override-Operator wird nicht unterstützt
-% The Override operator is not supported
-%%% asmr_e_nor_not_supported=07065_E_NOR nicht unterstützt
-%%% exec_w_assembler_not_found=09005_W_Assembler $1 nicht gefunden, schalte um auf externes Assemblieren
-%%% exec_w_error_while_assembling=09007_W_Fehler währen des Assemblierens, Exitcode $1
-%%% exec_w_cant_call_assembler=09008_W_Kann den Assembler nicht aufrufen, Fehler $1 beim Umschalten auf externen Assembler
-%%% exec_w_error_while_linking=09013_W_Fehler während des Linkens
-%%% exec_w_cant_call_linker=09014_W_Kann Linker nicht aufrufen, schalte um auf externes Linken
-%%% exec_w_util_not_found=09016_W_Hilfsprogramm "$1" nicht gefunden, schalte um auf externes Linken
-%%% exec_w_res_not_found=09021_W_Resource Compiler nicht gefunden, schalte um auf externen Modus
-%%% unit_u_start_parse_interface=10034_U_Parse Interface-Abschnitt von "$1"
-% When you use the \var{-vu} flag, the compiler warns that it starts
-% parsing the interface part of the unit
-%%% unit_u_start_parse_implementation=10035_U_Parse Implementation-Abschnitt von "$1"
-% When you use the \var{-vu} flag, the compiler warns that it starts
-% parsing the implementation part of the unit
-%%% option_defining_symbol=11037_D_Symbol $1 wird definiert
-%%% option_undefining_symbol=11038_D_Definition des Symbols $1 wird entfernt

+ 15 - 9
compiler/msg/errore.msg

@@ -124,7 +124,7 @@ general_i_number_of_notes=01023_I_$1 note(s) issued
 #
 # Scanner
 #
-# 02084 is the last used one
+# 02085 is the last used one
 #
 % \section{Scanner messages.}
 % This section lists the messages that the scanner emits. The scanner takes
@@ -357,7 +357,7 @@ scan_e_illegal_minfpconstprec=02085_E_Illegal minimal floating point constant pr
 #
 # Parser
 #
-# 03235 is the last used one
+# 03237 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -1416,7 +1416,7 @@ type_w_pointer_to_signed=04082_W_Converting pointers to signed integers may resu
 #
 # Symtable
 #
-# 05060 is the last used one
+# 05062 is the last used one
 #
 % \section{Symbol handling}
 % This section lists all the messages that concern the handling of symbols.
@@ -1583,7 +1583,7 @@ sym_h_abstract_method_list=05062_H_Found abstract method: $1
 #
 # Codegenerator
 #
-# 06040 is the last used one
+# 06049 is the last used one
 #
 % \section{Code generator messages}
 % This section lists all messages that can be displayed if the code
@@ -1714,7 +1714,7 @@ cg_e_goto_label_not_found=06049_E_Goto label "$1" not defined or optimized away
 #
 # Assembler reader
 #
-# 07105 is the last used one
+# 07107 is the last used one
 #
 asmr_d_start_reading=07000_DL_Starting $1 styled assembler parsing
 % This informs you that an assembler block is being parsed
@@ -1955,11 +1955,15 @@ asmr_w_direct_esp_neg_offset=07105_W_Use of -offset(%esp), access may cause a cr
 % Using -8(%esp) to access a local stack is not recommended, as
 % this stack portion can be overwritten by any function calls or interrupts.
 asmr_e_no_vmtoffset_possible=07106_E_VMTOffset must be used in combination with a virtual method, and "$1" is not virtual
-%
+% Only virtul methods have a VMT offset
+asmr_e_need_pic_ref=07107_E_Generating PIC, but reference is not PIC-safe
+% The compiler has been configured to generate position-independent code
+% (PIC), but there are position-dependent references in the current
+% handwritten assembler instruction.
 #
 # Assembler/binary writers
 #
-# 08018 is the last used one
+# 08020 is the last used one
 #
 asmw_f_too_many_asm_files=08000_F_Too many assembler files
 % With smartlinking enabled, there are too many assembler
@@ -1990,7 +1994,7 @@ asmw_e_64bit_not_supported=08021_E_Asm: 64 Bit operands not supported
 #
 # Executing linker/assembler
 #
-# 09034 is the last used one
+# 09028 is the last used one
 #
 # BeginOfTeX
 %
@@ -2076,6 +2080,8 @@ exec_d_resbin_params=09028_D_Calling resource compiler "$1" with "$2" as command
 #
 # Executable information
 #
+# 09134 is the last used one
+#
 # BeginOfTeX
 % \section{Executable information messages.}
 % This section lists all messages that the compiler emits when an executable program is produced,
@@ -2101,7 +2107,7 @@ execinfo_x_stackcommit=09134_X_Stack space committed: $1 bytes
 #
 # Unit loading
 #
-# 10041 is the last used one
+# 10059 is the last used one
 #
 # BeginOfTeX
 % \section{Unit loading messages.}

+ 3 - 2
compiler/msgidx.inc

@@ -575,6 +575,7 @@ const
   asmr_w_direct_ebp_neg_offset=07104;
   asmr_w_direct_esp_neg_offset=07105;
   asmr_e_no_vmtoffset_possible=07106;
+  asmr_e_need_pic_ref=07107;
   asmw_f_too_many_asm_files=08000;
   asmw_f_assembler_output_not_supported=08001;
   asmw_f_comp_not_supported=08002;
@@ -732,9 +733,9 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 45359;
+  MsgTxtSize = 45413;
 
   MsgIdxMax : array[1..20] of longint=(
-    24,86,238,83,63,50,107,22,135,60,
+    24,86,238,83,63,50,108,22,135,60,
     42,1,1,1,1,1,1,1,1,1
   );

+ 148 - 150
compiler/msgtxt.inc

@@ -1,7 +1,7 @@
 {$ifdef Delphi}
-const msgtxt : array[0..000188] of string[240]=(
+const msgtxt : array[0..000189] of string[240]=(
 {$else Delphi}
-const msgtxt : array[0..000188,1..240] of char=(
+const msgtxt : array[0..000189,1..240] of char=(
 {$endif Delphi}
   '01000_T_Compiler: $1'#000+
   '01001_D_Compiler OS: $1'#000+
@@ -647,169 +647,169 @@ const msgtxt : array[0..000188,1..240] of char=(
   'e lost'#000+
   '07106_E_VMTOffset must be used in combination with a virtual method, a'+
   'nd "$1" is not virtual'#000+
+  '07107_E_Generating PIC, but reference is not PIC-safe'#000+
   '08000_F_Too many assembler files'#000+
   '08001_F_Selected assembler output not supported'#000+
-  '08002_F_Comp not supported'#000+
-  '08003_F_Direct not support for b','inary writers'#000+
+  '08002','_F_Comp not supported'#000+
+  '08003_F_Direct not support for binary writers'#000+
   '08004_E_Allocating of data is only allowed in bss section'#000+
   '08005_F_No binary writer selected'#000+
   '08006_E_Asm: Opcode $1 not in table'#000+
-  '08007_E_Asm: $1 invalid combination of opcode and operands'#000+
-  '08008_E_Asm: 16 Bit references not supp','orted'#000+
+  '08007_E_Asm: $1 invalid combination of opcod','e and operands'#000+
+  '08008_E_Asm: 16 Bit references not supported'#000+
   '08009_E_Asm: Invalid effective address'#000+
   '08010_E_Asm: Immediate or reference expected'#000+
   '08011_E_Asm: $1 value exceeds bounds $2'#000+
   '08012_E_Asm: Short jump is out of range $1'#000+
-  '08013_E_Asm: Undefined label $1'#000+
-  '08014_E_Asm: Comp type not supporte','d for this target'#000+
+  '08013_E_Asm: ','Undefined label $1'#000+
+  '08014_E_Asm: Comp type not supported for this target'#000+
   '08015_E_Asm: Extended type not supported for this target'#000+
   '08016_E_Asm: Duplicate label $1'#000+
   '08017_E_Asm: Redefined label $1'#000+
   '08018_E_Asm: First defined here'#000+
-  '08019_E_Asm: Invalid register $1'#000+
-  '08020_E_Asm: 16 or 32 Bit references',' not supported'#000+
+  '08019_E_Asm: In','valid register $1'#000+
+  '08020_E_Asm: 16 or 32 Bit references not supported'#000+
   '08021_E_Asm: 64 Bit operands not supported'#000+
   '09000_W_Source operating system redefined'#000+
   '09001_I_Assembling (pipe) $1'#000+
   '09002_E_Can'#039't create assembler file: $1'#000+
-  '09003_E_Can'#039't create object file: $1'#000+
-  '09004_E_Can'#039't create archive file:',' $1'#000+
+  '09003_E_Can'#039't cre','ate object file: $1'#000+
+  '09004_E_Can'#039't create archive file: $1'#000+
   '09005_E_Assembler $1 not found, switching to external assembling'#000+
   '09006_T_Using assembler: $1'#000+
   '09007_E_Error while assembling exitcode $1'#000+
-  '09008_E_Can'#039't call the assembler, error $1 switching to external a'+
-  'ssembling'#000+
+  '09008_E_Can'#039't call the assembler, error $1 swi','tching to external'+
+  ' assembling'#000+
   '09009_I_Assembling $1'#000+
-  '09','010_I_Assembling with smartlinking $1'#000+
+  '09010_I_Assembling with smartlinking $1'#000+
   '09011_W_Object $1 not found, Linking may fail !'#000+
   '09012_W_Library $1 not found, Linking may fail !'#000+
   '09013_E_Error while linking'#000+
-  '09014_E_Can'#039't call the linker, switching to external linking'#000+
-  '09015_I_Linking ','$1'#000+
+  '09014_E_Can'#039't call the ','linker, switching to external linking'#000+
+  '09015_I_Linking $1'#000+
   '09016_E_Util $1 not found, switching to external linking'#000+
   '09017_T_Using util $1'#000+
   '09018_E_Creation of Executables not supported'#000+
-  '09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
+  '09019_E_Creation of Dynamic/Shared Libraries not supported',#000+
   '09020_I_Closing script $1'#000+
-  '09021_E_resource compiler n','ot found, switching to external mode'#000+
+  '09021_E_resource compiler not found, switching to external mode'#000+
   '09022_I_Compiling resource $1'#000+
   '09023_T_unit $1 can'#039't be statically linked, switching to smart lin'+
   'king'#000+
-  '09024_T_unit $1 can'#039't be smart linked, switching to static linking'+
-  #000+
-  '09025_T_unit $1 can'#039't be shared lin','ked, switching to static link'+
-  'ing'#000+
+  '09024_T_unit $1 can'#039't be smart linked, switching',' to static linki'+
+  'ng'#000+
+  '09025_T_unit $1 can'#039't be shared linked, switching to static linkin'+
+  'g'#000+
   '09026_E_unit $1 can'#039't be smart or static linked'#000+
   '09027_E_unit $1 can'#039't be shared or static linked'#000+
-  '09028_D_Calling resource compiler "$1" with "$2" as command line'#000+
+  '09028_D_Calling resource compiler "$1" with "$2" as comm','and line'#000+
   '09128_F_Can'#039't post process executable $1'#000+
-  '0912','9_F_Can'#039't open executable $1'#000+
+  '09129_F_Can'#039't open executable $1'#000+
   '09130_X_Size of Code: $1 bytes'#000+
   '09131_X_Size of initialized data: $1 bytes'#000+
   '09132_X_Size of uninitialized data: $1 bytes'#000+
-  '09133_X_Stack space reserved: $1 bytes'#000+
+  '09133_X_Stack space reserved: $1 bytes',#000+
   '09134_X_Stack space committed: $1 bytes'#000+
-  '10000_T_Units','earch: $1'#000+
+  '10000_T_Unitsearch: $1'#000+
   '10001_T_PPU Loading $1'#000+
   '10002_U_PPU Name: $1'#000+
   '10003_U_PPU Flags: $1'#000+
   '10004_U_PPU Crc: $1'#000+
   '10005_U_PPU Time: $1'#000+
   '10006_U_PPU File too short'#000+
-  '10007_U_PPU Invalid Header (no PPU at the begin)'#000+
+  '10007_U_PPU Invalid Header (no PPU at the ','begin)'#000+
   '10008_U_PPU Invalid Version $1'#000+
-  '10009_U_PPU is c','ompiled for another processor'#000+
+  '10009_U_PPU is compiled for another processor'#000+
   '10010_U_PPU is compiled for an other target'#000+
   '10011_U_PPU Source: $1'#000+
   '10012_U_Writing $1'#000+
   '10013_F_Can'#039't Write PPU-File'#000+
   '10014_F_Error reading PPU-File'#000+
-  '10015_F_unexpected end of PPU-File'#000+
-  '10016_F_Invalid PPU-File entr','y: $1'#000+
+  '10015_F_un','expected end of PPU-File'#000+
+  '10016_F_Invalid PPU-File entry: $1'#000+
   '10017_F_PPU Dbx count problem'#000+
   '10018_E_Illegal unit name: $1'#000+
   '10019_F_Too much units'#000+
   '10020_F_Circular unit reference between $1 and $2'#000+
-  '10021_F_Can'#039't compile unit $1, no sources available'#000+
+  '10021_F_Can'#039't compile unit $1, no sources avail','able'#000+
   '10022_F_Can'#039't find unit $1 used by $2'#000+
-  '10023_W_Uni','t $1 was not found but $2 exists'#000+
+  '10023_W_Unit $1 was not found but $2 exists'#000+
   '10024_F_Unit $1 searched but $2 found'#000+
   '10025_W_Compiling the system unit requires the -Us switch'#000+
   '10026_F_There were $1 errors compiling module, stopping'#000+
-  '10027_U_Load from $1 ($2) unit $3'#000+
-  '10028_U_Recompiling $','1, checksum changed for $2'#000+
+  '1','0027_U_Load from $1 ($2) unit $3'#000+
+  '10028_U_Recompiling $1, checksum changed for $2'#000+
   '10029_U_Recompiling $1, source found only'#000+
   '10030_U_Recompiling unit, static lib is older than ppufile'#000+
-  '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
-  '10032_U_Recompiling unit, obj and asm are older than ','ppufile'#000+
+  '10031_U_Recompiling unit, shared lib is older than ppufile',#000+
+  '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
   '10033_U_Recompiling unit, obj is older than asm'#000+
   '10034_U_Parsing interface of $1'#000+
   '10035_U_Parsing implementation of $1'#000+
   '10036_U_Second load for unit $1'#000+
-  '10037_U_PPU Check file $1 time $2'#000+
-  '10040_W_Can'#039't recompile unit $1, but found modife','d include files'+
-  #000+
+  '10037_U_PPU Check file $1 tim','e $2'#000+
+  '10040_W_Can'#039't recompile unit $1, but found modifed include files'#000+
   '10041_U_File $1 is newer than PPU file $2'#000+
   '10042_U_Trying to use a unit which was compiled with a different FPU m'+
   'ode'#000+
   '10043_U_Loading interface units from $1'#000+
-  '10044_U_Loading implementation units from $1'#000+
-  '10045_U_Interface CRC c','hanged for unit $1'#000+
+  '10044_U_Loadin','g implementation units from $1'#000+
+  '10045_U_Interface CRC changed for unit $1'#000+
   '10046_U_Implementation CRC changed for unit $1'#000+
   '10047_U_Finished compiling unit $1'#000+
   '10048_U_Add dependency of $1 to $2'#000+
   '10049_U_No reload, is caller: $1'#000+
-  '10050_U_No reload, already in second compile: $1'#000+
-  '10051_U_Flag for reloa','d: $1'#000+
+  '10050_U_No reload',', already in second compile: $1'#000+
+  '10051_U_Flag for reload: $1'#000+
   '10052_U_Forced reloading'#000+
   '10053_U_Previous state of $1: $2'#000+
   '10054_U_Already compiling $1, setting second compile'#000+
   '10055_U_Loading unit $1'#000+
   '10056_U_Finished loading unit $1'#000+
-  '10057_U_Registering new unit $1'#000+
+  '10057_U_Regi','stering new unit $1'#000+
   '10058_U_Re-resolving unit $1'#000+
-  '10059','_U_Skipping re-resolving unit $1, still loading used units'#000+
+  '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
   '11000_O_$1 [options] <inputfile> [options]'#000+
   '11001_W_Only one source file supported'#000+
-  '11002_W_DEF file can be created only for OS/2'#000+
+  '11002_W_DEF file can be created only for OS/2',#000+
   '11003_E_nested response files are not supported'#000+
-  '11004','_F_No source file name in command line'#000+
+  '11004_F_No source file name in command line'#000+
   '11005_N_No option inside $1 config file'#000+
   '11006_E_Illegal parameter: $1'#000+
   '11007_H_-? writes help pages'#000+
   '11008_F_Too many config files nested'#000+
-  '11009_F_Unable to open file $1'#000+
-  '11010_D_Reading further options fr','om $1'#000+
+  '11009_F_Una','ble to open file $1'#000+
+  '11010_D_Reading further options from $1'#000+
   '11011_W_Target is already set to: $1'#000+
   '11012_W_Shared libs not supported on DOS platform, reverting to static'+
   #000+
   '11013_F_too many IF(N)DEFs'#000+
   '11014_F_too many ENDIFs'#000+
-  '11015_F_open conditional at the end of the file'#000+
-  '11016_W_Debug information g','eneration is not supported by this execut'+
-  'able'#000+
+  '11015_F_open conditio','nal at the end of the file'#000+
+  '11016_W_Debug information generation is not supported by this executab'+
+  'le'#000+
   '11017_H_Try recompiling with -dGDB'#000+
   '11018_W_You are using the obsolete switch $1'#000+
-  '11019_W_You are using the obsolete switch $1, please use $2'#000+
-  '11020_N_Switching assembler to default source writing ','assembler'#000+
+  '11019_W_You are using the obsolete switch $1, please use $2'#000,
+  '11020_N_Switching assembler to default source writing assembler'#000+
   '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
   '11022_W_"$1" assembler use forced'#000+
   '11026_T_Reading options from file $1'#000+
-  '11027_T_Reading options from environment $1'#000+
+  '11027_T_Reading options from environme','nt $1'#000+
   '11028_D_Handling option "$1"'#000+
-  '11029__*** press en','ter ***'#000+
+  '11029__*** press enter ***'#000+
   '11030_H_Start of reading config file $1'#000+
   '11031_H_End of reading config file $1'#000+
   '11032_D_interpreting option "$1"'#000+
   '11036_D_interpreting firstpass option "$1"'#000+
-  '11033_D_interpreting file option "$1"'#000+
+  '11033_D_interpreting fil','e option "$1"'#000+
   '11034_D_Reading config file "$1"'#000+
-  '11035_D','_found source file name "$1"'#000+
+  '11035_D_found source file name "$1"'#000+
   '11039_E_Unknown code page'#000+
   '11040_F_Config file $1 is a directory'#000+
   '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+
   'ugging disabled'#000+
-  '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE]',' for $F'+
+  '11023_F','ree Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $F'+
   'PCCPU'#010+
   'Copyright (c) 1993-2007 by Florian Klaempfl'#000+
   '11024_Free Pascal Compiler version $FPCVERSION'#010+
@@ -818,10 +818,10 @@ const msgtxt : array[0..000188,1..240] of char=(
   'Compiler CPU Target: $FPCCPU'#010+
   #010+
   'Supported targets:'#010+
-  '  $OSTARGETS'#010+
+  '  ','$OSTARGETS'#010+
   #010+
   'Supported CPU instruction sets:'#010+
-  '  $INSTRUC','TIONSETS'#010+
+  '  $INSTRUCTIONSETS'#010+
   #010+
   'Supported FPU instruction sets:'#010+
   '  $FPUINSTRUCTIONSETS'#010+
@@ -830,261 +830,259 @@ const msgtxt : array[0..000188,1..240] of char=(
   '  $OPTIMIZATIONS'#010+
   #010+
   'This program comes under the GNU General Public Licence'#010+
-  'For more information read COPYING.FPC'#010+
+  'For more information r','ead COPYING.FPC'#010+
   #010+
   'Report bugs,suggestions etc to:'#010+
-  '     ','            [email protected]'#000+
+  '                 [email protected]'#000+
   '11025_**0*_Put + after a boolean switch option to enable it, - to disa'+
   'ble it'#010+
   '**1a_The compiler doesn'#039't delete the generated assembler file'#010+
-  '**2al_List sourcecode lines in assembler file'#010+
-  '**2an_List node info in',' assembler file'#010+
+  '**2al_List sour','cecode lines in assembler file'#010+
+  '**2an_List node info in assembler file'#010+
   '*L2ap_Use pipes instead of creating temporary assembler files'#010+
   '**2ar_List register allocation/release info in assembler file'#010+
-  '**2at_List temp allocation/release info in assembler file'#010+
+  '**2at_List temp allocation/release info in ass','embler file'#010+
   '**1A<x>_Output format:'#010+
-  '**2Adefault_Use def','ault assembler'#010+
+  '**2Adefault_Use default assembler'#010+
   '3*2Aas_Assemble using GNU AS'#010+
   '3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+
   '3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+
   '3*2Anasmwin32_Win32 object file using Nasm'#010+
-  '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
-  '3*2Awasm_Obj file u','sing Wasm (Watcom)'#010+
+  '3*2Anasmwdosx_','Win32/WDOSX object file using Nasm'#010+
+  '3*2Awasm_Obj file using Wasm (Watcom)'#010+
   '3*2Anasmobj_Obj file using Nasm'#010+
   '3*2Amasm_Obj file using Masm (Microsoft)'#010+
   '3*2Atasm_Obj file using Tasm (Borland)'#010+
   '3*2Aelf_ELF (Linux) using internal writer'#010+
-  '3*2Acoff_COFF (Go32v2) using internal writer'#010+
-  '3*2Apecoff_PE-COFF (Wi','n32) using internal writer'#010+
+  '3*2Acoff_COFF',' (Go32v2) using internal writer'#010+
+  '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+
   '4*2Aas_Assemble using GNU AS'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Agas_GNU Motorola assembler'#010+
   '6*2Amit_MIT Syntax (old GAS)'#010+
   '6*2Amot_Standard Motorola assembler'#010+
-  'A*2Aas_Assemble using GNU AS'#010+
-  'P*2Aas_Assemble using GNU A','S'#010+
+  'A*','2Aas_Assemble using GNU AS'#010+
+  'P*2Aas_Assemble using GNU AS'#010+
   'S*2Aas_Assemble using GNU AS'#010+
   '**1b_Generate browser info'#010+
   '**2bl_Generate local symbol info'#010+
   '**1B_Build all modules'#010+
   '**1C<x>_Code generation options:'#010+
-  '**2Cc<x>_Set default calling convention to <x>'#010+
-  '**2CD_Create also dynamic library (not support','ed)'#010+
+  '**2Cc<x>_Set default calling convention',' to <x>'#010+
+  '**2CD_Create also dynamic library (not supported)'#010+
   '**2Ce_Compilation with emulated floating point opcodes'#010+
   '**2Cf<x>_Select fpu instruction set to use, see fpc -i for possible va'+
   'lues'#010+
-  '**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+
+  '**2CF<x>_Minimal floating point constant precision (','default, 32, 64)'+
+  #010+
   '**2Cg_Generate PIC code'#010+
-  '**2Ch<n>_<n> ','bytes heap (between 1023 and 67107840)'#010+
+  '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
   '**2Ci_IO-checking'#010+
   '**2Cn_Omit linking stage'#010+
   '**2Co_Check overflow of integer operations'#010+
   '**2CO_Check for possible overflow of integer operations'#010+
-  '**2Cp<x>_Select instruction set, see fpc -i for possible va','lues'#010+
+  '**2Cp','<x>_Select instruction set, see fpc -i for possible values'#010+
   '**2CP<x>=<y>_ packing settings'#010+
   '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+
   'and 8'#010+
   '**2Cr_Range checking'#010+
   '**2CR_Verify object method call validity'#010+
-  '**2Cs<n>_Set stack size to <n>'#010+
+  '**2Cs<n>_Set',' stack size to <n>'#010+
   '**2Ct_Stack checking'#010+
-  '**2CX_Create a','lso smartlinked library'#010+
+  '**2CX_Create also smartlinked library'#010+
   '**1d<x>_Defines the symbol <x>'#010+
   '**1D_Generate a DEF file'#010+
   '**2Dd<x>_Set description to <x>'#010+
   '**2Dv<x>_Set DLL version to <x>'#010+
   '*O2Dw_PM application'#010+
-  '**1e<x>_Set path to executable'#010+
+  '**1e<x>_Set path to e','xecutable'#010+
   '**1E_Same as -Cn'#010+
   '**1fPIC_Same as -Cg'#010+
-  '**1F<x>','_Set file names and paths:'#010+
+  '**1F<x>_Set file names and paths:'#010+
   '**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+
   'sed'#010+
   '**2Fc<x>_Set input codepage to <x>'#010+
   '**2FC<x>_Set RC compiler binary name to <x>'#010+
-  '**2FD<x>_Set the directory where to search for compiler util','ities'#010+
+  '**2FD<','x>_Set the directory where to search for compiler utilities'#010+
   '**2Fe<x>_Redirect error output to <x>'#010+
   '**2Ff<x>_Add <x> to framework path (Darwin only)'#010+
   '**2FE<x>_Set exe/unit output path to <x>'#010+
   '**2Fi<x>_Add <x> to include path'#010+
-  '**2Fl<x>_Add <x> to library path'#010+
+  '**2Fl<x>_Add <x> to',' library path'#010+
   '**2FL<x>_Use <x> as dynamic linker'#010+
-  '**2Fm','<x>_Load unicode conversion table from <x>.txt in the compiler '+
-  'dir'#010+
+  '**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+
+  'r'#010+
   '**2Fo<x>_Add <x> to object path'#010+
   '**2Fr<x>_Load error message file <x>'#010+
   '**2FR<x>_Set resource (.res) linker to <x>'#010+
-  '**2Fu<x>_Add <x> to unit path'#010+
-  '**2FU<x>_Set unit output path t','o <x>, overrides -FE'#010+
+  '**2Fu<x','>_Add <x> to unit path'#010+
+  '**2FU<x>_Set unit output path to <x>, overrides -FE'#010+
   '*g1g_Generate debug information (default format for target)'#010+
   '*g2gc_Generate checks for pointers'#010+
   '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+
-  '*g2gl_Use line info unit (show more info with backtraces)'#010+
-  '*g','2go<x>_Set debug information options'#010+
+  '*g2gl_','Use line info unit (show more info with backtraces)'#010+
+  '*g2go<x>_Set debug information options'#010+
   '*g3godwarfsets_ Enable Dwarf set debug information (breaks gdb < 6.5)'#010+
   '*g2gp_Preserve case in stabs symbol names'#010+
-  '*g2gs_Generate stabs debug information'#010+
-  '*g2gt_Trash local variables (to detect uninitialized',' uses)'#010+
+  '*g2gs_Generate stabs debug informatio','n'#010+
+  '*g2gt_Trash local variables (to detect uninitialized uses)'#010+
   '*g2gv_Generates programs traceable with valgrind'#010+
   '*g2gw_Generate dwarf-2 debug information (same as -gw2)'#010+
   '*g2gw2_Generate dwarf-2 debug information'#010+
-  '*g2gw3_Generate dwarf-3 debug information'#010+
+  '*g2gw3_Generate dwarf-3 debug in','formation'#010+
   '**1i_Information'#010+
-  '**2iD_Return compiler date'#010,
+  '**2iD_Return compiler date'#010+
   '**2iV_Return short compiler version'#010+
   '**2iW_Return full compiler version'#010+
   '**2iSO_Return compiler OS'#010+
   '**2iSP_Return compiler host processor'#010+
   '**2iTO_Return target OS'#010+
-  '**2iTP_Return target processor'#010+
+  '**2iTP_Return target proces','sor'#010+
   '**1I<x>_Add <x> to include path'#010+
-  '**1k<x>_Pass <x> t','o the linker'#010+
+  '**1k<x>_Pass <x> to the linker'#010+
   '**1l_Write logo'#010+
   '**1M<x>_Set language mode to <x>'#010+
   '**2Mfpc_Free Pascal dialect (default)'#010+
   '**2Mobjfpc_FPC mode with Object Pascal support'#010+
-  '**2Mdelphi_Delphi 7 compatibility mode'#010+
+  '**2Mdelphi_Delphi 7 compatibility mode'#010,
   '**2Mtp_TP/BP 7.0 compatibility mode'#010+
-  '**2Mmacpas_Macinto','sh Pascal dialects compatibility mode'#010+
+  '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+
   '**1n_Do not read the default config files'#010+
   '**1N<x>_Node tree optimizations'#010+
   '**2Nu_Unroll loops'#010+
-  '**1o<x>_Change the name of the executable produced to <x>'#010+
+  '**1o<x>_Change the name of the executable produced to <','x>'#010+
   '**1O<x>_Optimizations:'#010+
-  '**2O-_Disable optimizations'#010,
+  '**2O-_Disable optimizations'#010+
   '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+
   '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+
   '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+
-  '**2Oa<x>=<y>_Set alignment'#010+
-  '**2Oo[NO]<x>_Enable or disable optimizations',', see fpc -i for possibl'+
-  'e values'#010+
+  '**2Oa<x>=<y>_Set ','alignment'#010+
+  '**2Oo[NO]<x>_Enable or disable optimizations, see fpc -i for possible '+
+  'values'#010+
   '**2Op<x>_Set target cpu for optimizing, see fpc -i for possible values'+
   #010+
   '**2Os_Optimize for size rather than speed'#010+
-  '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+
+  '**1pg_Generate profile code for gprof (d','efines FPC_PROFILE)'#010+
   '**1R<x>_Assembler reading style:'#010+
-  '*','*2Rdefault_Use default assembler for target'#010+
+  '**2Rdefault_Use default assembler for target'#010+
   '3*2Ratt_Read AT&T style assembler'#010+
   '3*2Rintel_Read Intel style assembler'#010+
   '6*2RMOT_Read motorola style assembler'#010+
   '**1S<x>_Syntax options:'#010+
-  '**2S2_Same as -Mobjfpc'#010+
-  '**2Sc_Support operators like C (*=,+=,/=',' and -=)'#010+
+  '**2S2_Sam','e as -Mobjfpc'#010+
+  '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+
   '**2Sa_Turn on assertions'#010+
   '**2Sd_Same as -Mdelphi'#010+
   '**2Se<x>_Error options. <x> is a combination of the following:'#010+
   '**3*_<n> : Compiler halts after the <n> errors (default is 1)'#010+
-  '**3*_w : Compiler also halts after warnings'#010+
-  '**3*_n : Compi','ler also halts after notes'#010+
+  '**3*','_w : Compiler also halts after warnings'#010+
+  '**3*_n : Compiler also halts after notes'#010+
   '**3*_h : Compiler also halts after hints'#010+
   '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+
   '**2Sh_Use ansistrings by default instead of shortstrings'#010+
-  '**2Si_Turn on inlining of procedures/functions declared ','as "inline"'#010+
+  '**','2Si_Turn on inlining of procedures/functions declared as "inline"'#010+
   '**2Sk_Load fpcylix unit'#010+
   '**2SI<x>_Set interface style to <x>'#010+
   '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
-  '**2Sm_Support macros like C (global)'#010+
+  '**2Sm_Support macros like C (glo','bal)'#010+
   '**2So_Same as -Mtp'#010+
-  '**2Ss_Constructor name must be',' init (destructor must be done)'#010+
+  '**2Ss_Constructor name must be init (destructor must be done)'#010+
   '**2St_Allow static keyword in objects'#010+
   '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+
   '**1s_Do not call assembler and linker'#010+
-  '**2sh_Generate script to link on host'#010+
-  '**2st_Generate script to link',' on target'#010+
+  '**2sh_Generat','e script to link on host'#010+
+  '**2st_Generate script to link on target'#010+
   '**2sr_Skip register allocation phase (use with -alr)'#010+
   '**1T<x>_Target operating system:'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
   '3*2Tfreebsd_FreeBSD'#010+
-  '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
+  '3*2Tgo32v2_Version ','2 of DJ Delorie DOS extender'#010+
   '3*2Tlinux_Linux'#010+
-  '3*2Tnetbs','d_NetBSD'#010+
+  '3*2Tnetbsd_NetBSD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
   '3*2Topenbsd_OpenBSD'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
-  '3*2Twatcom_Watcom compatible DOS extender'#010+
+  '3*2Twatcom_Watcom compa','tible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
-  '3*2Twi','n32_Windows 32 Bit'#010+
+  '3*2Twin32_Windows 32 Bit'#010+
   '3*2Twince_Windows CE'#010+
   '4*2Tlinux_Linux'#010+
   '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tatari_Atari ST/STe/TT'#010+
   '6*2Tlinux_Linux/m68k'#010+
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
-  '6*2Tpalmos_PalmOS'#010+
+  '6*2Tpalmos_PalmO','S'#010+
   'A*2Tlinux_Linux'#010+
   'A*2Twince_Windows CE'#010+
-  'P*2Tamiga_Amiga','OS on PowerPC'#010+
+  'P*2Tamiga_AmigaOS on PowerPC'#010+
   'P*2Tdarwin_Darwin and Mac OS X on PowerPC'#010+
   'P*2Tlinux_Linux on PowerPC'#010+
   'P*2Tmacos_Mac OS (classic) on PowerPC'#010+
   'P*2Tmorphos_MorphOS'#010+
   'S*2Tlinux_Linux'#010+
-  '**1u<x>_Undefines the symbol <x>'#010+
+  '**1u<x>_Undefines the symbol ','<x>'#010+
   '**1U_Unit options:'#010+
-  '**2Un_Do not check where the un','it name matches the file name'#010+
+  '**2Un_Do not check where the unit name matches the file name'#010+
   '**2Ur_Generate release unit files (never automatically recompiled)'#010+
   '**2Us_Compile a system unit'#010+
-  '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
-  '**2*_e : Show errors (default)       0 : Show no','thing (except errors'+
-  ')'#010+
+  '**1v<x>_Be verbose. <x> is a combination of the following let','ters:'#010+
+  '**2*_e : Show errors (default)       0 : Show nothing (except errors)'#010+
   '**2*_w : Show warnings               u : Show unit info'#010+
   '**2*_n : Show notes                  t : Show tried/used files'#010+
-  '**2*_h : Show hints                  c : Show conditionals'#010+
-  '**2*_i : Show general info           d :',' Show debug info'#010+
+  '**2*_h : Show hints                  c : Show',' conditionals'#010+
+  '**2*_i : Show general info           d : Show debug info'#010+
   '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
   '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
-  '**2*_b : Write file names messages with full path'#010+
-  '**2*_v : Write fpcdebug.txt with ','    p : Write tree.log with parse t'+
-  'ree'#010+
+  '**2*_b : Write file names mes','sages with full path'#010+
+  '**2*_v : Write fpcdebug.txt with     p : Write tree.log with parse tre'+
+  'e'#010+
   '**2*_    lots of debugging info'#010+
   '3*1W<x>_Target-specific options (targets)'#010+
   'A*1W<x>_Target-specific options (targets)'#010+
-  'P*1W<x>_Target-specific options (targets)'#010+
-  '3*2Wb_Create a bundle instead of a library ','(Darwin)'#010+
+  'P*1W<x>_Target-specific options',' (targets)'#010+
+  '3*2Wb_Create a bundle instead of a library (Darwin)'#010+
   'P*2Wb_Create a bundle instead of a library (Darwin)'#010+
   'p*2Wb_Create a bundle instead of a library (Darwin)'#010+
   '3*2WB_Create a relocatable image (Windows)'#010+
-  'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
-  '3*2WC_Specify console type appli','cation (EMX, OS/2, Windows)'#010+
+  'A*2WB_Create a relocatable ima','ge (Windows, Symbian)'#010+
+  '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
   'A*2WC_Specify console type application (Windows)'#010+
   'P*2WC_Specify console type application (Classic Mac OS)'#010+
-  '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
-  'A*2WD_Use DEFFILE to export functions of DLL ','or EXE (Windows)'#010+
+  '3*2WD_Use DEFFILE to export functions of DLL or EXE (','Windows)'#010+
+  'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
   '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+
   '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+
   'A*2WG_Specify graphic type application (Windows)'#010+
-  'P*2WG_Specify graphic type application (Classic Mac OS)'#010+
-  '3*2','WN_Do not generate relocation code, needed for debugging (Windows'+
-  ')'#010+
+  'P*2WG','_Specify graphic type application (Classic Mac OS)'#010+
+  '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
   'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
   '3*2WR_Generate relocation code (Windows)'#010+
-  'A*2WR_Generate relocation code (Windows)'#010+
-  'P*2WT_Specify MPW too','l type application (Classic Mac OS)'#010+
+  'A*2WR_Ge','nerate relocation code (Windows)'#010+
+  'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
   '**1X_Executable options:'#010+
   '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+
   'ux)'#010+
-  '**2Xd_Do not use standard library search path (needed for cross compil'+
-  'e)'#010+
+  '**2Xd_Do not use standard library search path (need','ed for cross comp'+
+  'ile)'#010+
   '**2Xe_Use external linker'#010+
-  '**2XD_','Try to link units dynamically      (defines FPC_LINK_DYNAMIC)'#010+
+  '**2XD_Try to link units dynamically      (defines FPC_LINK_DYNAMIC)'#010+
   '**2Xi_Use internal linker'#010+
   '**2Xm_Generate link map'#010+
   '**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+
   's '#039'main'#039')'#010+
-  '**2XP<x>_Prepend the binutils names with the prefix <x>'#010,
+  '**','2XP<x>_Prepend the binutils names with the prefix <x>'#010+
   '**2Xr<x>_Set library search path to <x> (needed for cross compile) (Be'+
   'OS, Linux)'#010+
   '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
   ', Linux, Mac OS, Solaris)'#010+
-  '**2Xs_Strip all symbols from executable'#010+
-  '**2XS_Try to link units',' statically (default, defines FPC_LINK_STATIC'+
-  ')'#010+
+  '**2Xs_Str','ip all symbols from executable'#010+
+  '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+
   '**2Xt_Link with static libraries (-static is passed to linker)'#010+
   '**2XX_Try to smartlink units             (defines FPC_LINK_SMART)'#010+
   '**1*_'#010+
-  '**1?_Show this help'#010+
+  '**1?','_Show this help'#010+
   '**1h_Shows this help without waiting'#000
 );

+ 12 - 6
compiler/options.pas

@@ -506,12 +506,18 @@ begin
                          break;
                        end;
                     'g' :
-                       if tf_no_pic_supported in target_info.flags then
-                         message(scan_w_pic_ignored)
-                       else if UnsetBool(More, j) then
-                         exclude(init_settings.moduleswitches,cs_create_pic)
-                       else
-                         include(init_settings.moduleswitches,cs_create_pic);
+                       begin
+                         if tf_no_pic_supported in target_info.flags then
+                           begin
+                             { consume a possible '-' coming after it }
+                             UnsetBool(More, j);
+                             message(scan_w_pic_ignored);
+                           end
+                         else if UnsetBool(More, j) then
+                           exclude(init_settings.moduleswitches,cs_create_pic)
+                         else
+                           include(init_settings.moduleswitches,cs_create_pic);
+                      end;
                     'h' :
                       begin
                          val(copy(more,j+1,length(more)-j),heapsize,code);

+ 6 - 4
compiler/rautils.pas

@@ -104,7 +104,7 @@ type
     Function  SetupSelf:boolean;
     Function  SetupOldEBP:boolean;
     Function  SetupVar(const s:string;GetOffset : boolean): Boolean;
-    Procedure CheckOperand; virtual;
+    Function  CheckOperand: boolean; virtual;
     Procedure InitRef;
   end;
   TCOperand = class of TOperand;
@@ -118,7 +118,8 @@ type
     constructor create(optype : tcoperand);virtual;
     destructor  destroy;override;
     { converts the instruction to an instruction how it's used by the assembler writer
-      and concats it to the passed list, the newly created item is returned }
+      and concats it to the passed list. The newly created item is returned if the 
+      instruction was valid, otherwise nil is returned }
     function ConcatInstruction(p:TAsmList) : tai;virtual;
     Procedure Swapoperands;
   end;
@@ -966,12 +967,13 @@ Begin
   end;
 end;
 
-Procedure TOperand.CheckOperand;
+Function TOperand.CheckOperand: boolean;
 {*********************************************************************}
 {  Description: This routine checks if the operand is of              }
-{  valid. Does nothing by default.                                    }
+{  valid, and returns false if it isn't. Does nothing by default.     }
 {*********************************************************************}
 begin
+  result:=true;
 end;
 
 

+ 2 - 1
compiler/sparc/racpu.pas

@@ -45,7 +45,8 @@ implementation
       begin
         result:=inherited ConcatInstruction(p);
         { delay slot annulled support }
-        if (result.typ=ait_instruction) and
+        if assigned(result) and
+           (result.typ=ait_instruction) and
            delayslot_annulled then
           taicpu(result).delayslot_annulled:=true;
       end;

+ 3 - 0
compiler/x86/nx86add.pas

@@ -589,6 +589,7 @@ unit nx86add;
                   internalerror(200203245);
 
                  hregister:=tcgx86(cg).getmmxregister(current_asmdata.CurrAsmList);
+                 tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,left.location.reference);
                  emit_ref_reg(A_MOVQ,S_NO,left.location.reference,hregister);
                end;
 
@@ -612,6 +613,7 @@ unit nx86add;
                begin
                  if not(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
                   internalerror(200203247);
+                 tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,right.location.reference);
                  emit_ref_reg(A_MOVQ,S_NO,right.location.reference,hreg);
                  emit_reg_reg(op,S_NO,left.location.register,hreg);
                end;
@@ -625,6 +627,7 @@ unit nx86add;
                begin
                  if not(right.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
                   internalerror(200203246);
+                 tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,right.location.reference);
                  emit_ref_reg(op,S_NO,right.location.reference,left.location.register);
                end;
               location.register:=left.location.register;

+ 28 - 15
compiler/x86/rax86.pas

@@ -44,7 +44,7 @@ type
     opsize  : topsize;
     Procedure SetSize(_size:longint;force:boolean);override;
     Procedure SetCorrectSize(opcode:tasmop);override;
-    Procedure CheckOperand; override;
+    Function CheckOperand: boolean; override;
   end;
 
   Tx86Instruction=class(TInstruction)
@@ -207,23 +207,34 @@ begin
     end;
 end;
 
-Procedure Tx86Operand.CheckOperand;
+Function Tx86Operand.CheckOperand: boolean;
 
 begin
-  if (opr.typ=OPR_Reference) and
-     not hasvar then
+  result:=true;
+  if (opr.typ=OPR_Reference) then
     begin
-      if (getsupreg(opr.ref.base)=RS_EBP) and (opr.ref.offset>0) then
+      if not hasvar then
         begin
-          if current_procinfo.procdef.proccalloption=pocall_register then
-            message(asmr_w_no_direct_ebp_for_parameter)
-          else
-            message(asmr_w_direct_ebp_for_parameter_regcall);
-        end
-      else if (getsupreg(opr.ref.base)=RS_EBP) and (opr.ref.offset<0) then
-        message(asmr_w_direct_ebp_neg_offset)
-      else if (getsupreg(opr.ref.base)=RS_ESP) and (opr.ref.offset<0) then
-        message(asmr_w_direct_esp_neg_offset);
+          if (getsupreg(opr.ref.base)=RS_EBP) and (opr.ref.offset>0) then
+            begin
+              if current_procinfo.procdef.proccalloption=pocall_register then
+                message(asmr_w_no_direct_ebp_for_parameter)
+              else
+                message(asmr_w_direct_ebp_for_parameter_regcall);
+            end
+          else if (getsupreg(opr.ref.base)=RS_EBP) and (opr.ref.offset<0) then
+            message(asmr_w_direct_ebp_neg_offset)
+          else if (getsupreg(opr.ref.base)=RS_ESP) and (opr.ref.offset<0) then
+            message(asmr_w_direct_esp_neg_offset);
+        end;
+      if (cs_create_pic in current_settings.moduleswitches) and
+         assigned(opr.ref.symbol) and
+         not assigned(opr.ref.relsymbol) and
+         (opr.ref.refaddr<>addr_pic) then
+        begin
+          message(asmr_e_need_pic_ref);
+          result:=false;
+        end;
     end;
 end;
 
@@ -525,8 +536,10 @@ begin
   if (OpOrder=op_intel) then
     SwapOperands;
 
+  ai:=nil;
   for i:=1 to Ops do
-    operands[i].CheckOperand;
+    if not operands[i].CheckOperand then
+      exit;
 
 { Get Opsize }
   if (opsize<>S_NO) or (Ops=0) then

+ 53 - 46
compiler/x86/rax86att.pas

@@ -38,6 +38,8 @@ Interface
       procedure BuildOperand(oper : tx86operand);
       procedure BuildOpCode(instr : tx86instruction);
       procedure handlepercent;override;
+     protected
+      procedure MaybeGetPICModifier(var oper: tx86operand);
     end;
 
 
@@ -259,6 +261,55 @@ Implementation
       end;
 
 
+    Procedure tx86attreader.MaybeGetPICModifier(var oper: tx86operand);
+      var
+        relsym: string;
+        asmsymtyp: tasmsymtype;
+        l: aint;
+      begin
+        case actasmtoken of
+          AS_AT:
+            begin
+              { darwin/i386 needs a relsym instead, and we can't }
+              { generate this automatically                      }
+              if (target_info.system=system_i386_darwin) then
+                Message(asmr_e_invalid_reference_syntax);
+              consume(AS_AT);
+              if actasmtoken=AS_ID then
+                begin
+{$ifdef x86_64}
+                  if actasmpattern='GOTPCREL' then
+{$endif x86_64}
+{$ifdef i386}
+                  if actasmpattern='GOT' then
+{$endif i386}
+                    begin
+                      oper.opr.ref.refaddr:=addr_pic;
+                      consume(AS_ID);
+                    end
+                  else
+                    Message(asmr_e_invalid_reference_syntax);
+                end
+              else
+                Message(asmr_e_invalid_reference_syntax);
+            end;
+          AS_MINUS:
+            begin
+              { relsym? }
+              Consume(AS_MINUS);
+              BuildConstSymbolExpression(true,true,false,l,relsym,asmsymtyp);
+              if (relsym<>'') then
+                if not assigned(oper.opr.ref.relsymbol) then
+                  oper.opr.ref.relsymbol:=current_asmdata.RefAsmSymbol(relsym)
+                else
+                  Message(asmr_e_invalid_reference_syntax)
+              else
+                dec(oper.opr.ref.offset,l);
+            end;
+        end;
+      end;
+
+
     Procedure tx86attreader.BuildOperand(oper : tx86operand);
       var
         tempstr,
@@ -340,11 +391,6 @@ Implementation
           end;
 
 
-        procedure handleat;
-          begin
-          end;
-
-
         function MaybeBuildReference:boolean;
           { Try to create a reference, if not a reference is found then false
             is returned }
@@ -391,24 +437,7 @@ Implementation
                        Message(asmr_e_invalid_reference_syntax);
                      inc(oper.opr.ref.offset,l);
                    end;
-                  if actasmtoken=AS_AT then
-                    begin
-                      consume(AS_AT);
-                      if actasmtoken=AS_ID then
-                        begin
-{$ifdef x86_64}
-                          if actasmpattern='GOTPCREL' then
-{$endif x86_64}
-{$ifdef i386}
-                          if actasmpattern='GOT' then
-{$endif i386}
-                            oper.opr.ref.refaddr:=addr_pic
-                          else
-                            Message(asmr_e_invalid_reference_syntax);
-                        end
-                      else
-                        Message(asmr_e_invalid_reference_syntax);
-                    end;
+                  MaybeGetPICModifier(oper);
                   case actasmtoken of
                     AS_END,
                     AS_SEPARATOR,
@@ -525,29 +554,7 @@ Implementation
                     else
                      begin
                        if oper.SetupVar(expr,false) then
-                        begin
-                          if actasmtoken=AS_AT then
-                            begin
-                              consume(AS_AT);
-                              if actasmtoken=AS_ID then
-                                begin
-{$ifdef x86_64}
-                                  if actasmpattern='GOTPCREL' then
-{$endif x86_64}
-{$ifdef i386}
-                                  if actasmpattern='GOT' then
-{$endif i386}
-                                    begin
-                                      oper.opr.ref.refaddr:=addr_pic;
-                                      consume(AS_ID);
-                                    end
-                                  else
-                                    Message(asmr_e_invalid_reference_syntax);
-                                end
-                              else
-                                Message(asmr_e_invalid_reference_syntax);
-                            end;
-                          end
+                         MaybeGetPICModifier(oper)
                        else
                         Begin
                           { look for special symbols ... }

+ 11 - 5
compiler/x86/rax86int.pas

@@ -1187,11 +1187,12 @@ Unit Rax86int;
                  end
                 else
                  Begin
-                   if oper.hasvar and not GotOffset then
+                   if negative and not oper.hasvar then
+                     Message(asmr_e_only_add_relocatable_symbol)
+                   else if oper.hasvar and not GotOffset and
+                           (not negative or assigned(oper.opr.ref.relsymbol)) then
                      Message(asmr_e_cant_have_multiple_relocatable_symbols);
                    HadVar:=oper.hasvar and GotOffset;
-                   if negative then
-                     Message(asmr_e_only_add_relocatable_symbol);
                    tempstr:=actasmpattern;
                    Consume(AS_ID);
                    { typecasting? }
@@ -1209,8 +1210,13 @@ Unit Rax86int;
                       begin
                         CreateLocalLabel(tempstr,hl,false);
                         oper.InitRef;
-                        oper.opr.ref.symbol:=hl;
-                        oper.hasvar:=true;
+                        if not negative then
+                          begin
+                            oper.opr.ref.symbol:=hl;
+                            oper.hasvar:=true;
+                          end
+                        else
+                          oper.opr.ref.relsymbol:=hl;
                       end
                    else
                     if oper.SetupVar(tempstr,GotOffset) then

+ 1 - 0
tests/tbf/tb0037.pp

@@ -1,4 +1,5 @@
 { %FAIL }
+{ %OPT=-Cg- }
 { Old file: tbf0175.pp }
 { Asm, mov word,%eax should not be allowed without casting emits a warning (or error with range checking enabled)  OK 0.99.11 (PM) }
 

+ 13 - 0
tests/tbf/tb0204.pp

@@ -0,0 +1,13 @@
+{ %fail }
+{ %cpu=i386 }
+{ %opt=-Cg- }
+
+var
+  a: longint;
+begin
+  {$asmmode att}
+  asm
+.LPIC:
+    movl a-.LPIC-.LPIC(%ecx),%eax
+  end;
+end.

+ 13 - 0
tests/tbf/tb0204a.pp

@@ -0,0 +1,13 @@
+{ %fail }
+{ %cpu=i386 }
+{ %opt=-Cg- }
+
+var
+  a: longint;
+begin
+  {$asmmode intel}
+  asm
+@@LPIC:
+    mov eax,[a-@@LPIC-@@LPIC+ecx]
+  end;
+end.

+ 1 - 0
tests/tbs/tb0106.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0124b.pp }
 {  }
 

+ 1 - 0
tests/tbs/tb0145.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0175.pp }
 { Asm, mov word,%eax should not be allowed without casting emits a warning (or error with range checking enabled)  OK 0.99.11 (PM) }
 

+ 1 - 0
tests/tbs/tb0193.pp

@@ -1,3 +1,4 @@
+{ %OPT=-Cg- }
 { Old file: tbs0227.pp }
 { external var does strange things when declared in localsymtable OK 0.99.11 (PFV) }
 

+ 1 - 0
tests/tbs/tb0194.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0228.pp }
 { Asm, wrong warning for size                          OK 0.99.11 (PFV) }
 

+ 1 - 0
tests/tbs/tb0236.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0276.pp }
 { Asm, intel reference parsing incompatibility         OK 0.99.13 (PFV) }
 

+ 1 - 0
tests/tbs/tb0261.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0304.pp }
 { Label redefined when inlining assembler              OK 0.99.13 (PFV) }
 

+ 1 - 0
tests/tbs/tb0267.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0309.pp }
 { problem with ATT assembler written by bin writer     OK 0.99.14 (PFV) }
 

+ 1 - 0
tests/tbs/tb0275.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Old file: tbs0322.pp }
 {  }
 

+ 1 - 0
tests/tbs/tb0319.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode att}
 
 const

+ 1 - 0
tests/tbs/tb0320.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 
 const

+ 1 - 0
tests/tbs/tb0495.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 var
   Digits : array[0..63] of byte;

+ 25 - 1
tests/test/opt/tretopt.pp

@@ -281,8 +281,20 @@ begin
 {$endif}
 {$ifdef cpui386}
     leal t,%eax
+{$ifndef FPC_PIC}
     movl %eax,p3
-{$endif}
+{$else FPC_PIC}
+    call .Lpic
+.Lpic:
+    popl %ecx
+{$ifdef darwin}
+    movl %eax,p3-.Lpic(%ecx)
+{$else darwin}
+   addl $_GLOBAL_OFFSET_TABLE_,%ecx
+   movl %eax,p3@GOT(%ecx)
+{$endif darwin}
+{$endif FPC_PIC}
+{$endif cpui386}
   end;
 
   t.a:='x';
@@ -320,7 +332,19 @@ begin
 {$endif}
 {$ifdef cpui386}
     leal t,%eax
+{$ifndef FPC_PIC}
     movl %eax,p3
+{$else FPC_PIC}
+    call .Lpic
+.Lpic:
+    popl %ecx
+{$ifdef darwin}
+    movl %eax,p3-.Lpic(%ecx)
+{$else darwin}
+   addl $_GLOBAL_OFFSET_TABLE_,%ecx
+   movl %eax,p3@GOT(%ecx)
+{$endif darwin}
+{$endif FPC_PIC}
 {$endif}
   end;
 

+ 12 - 0
tests/test/tasmread.pp

@@ -11,7 +11,19 @@ var l: longint;
 begin
 {$ifdef cpui386}
   asm
+{$ifndef FPC_PIC}
      mov test.l, 5
+{$else FPC_PIC}
+     call @@LPIC
+@@LPIC:
+     pop ecx
+{$ifdef darwin}
+     mov [test.l-@@LPIC+ecx],5
+{$else darwin}
+     add ecx, @_GLOBAL_OFFSET_TABLE_
+     mov [ecx].OFFSET test.l,5
+{$endif darwin}
+{$endif FPC_PIC}
   end;
 {$endif cpui386}
 {$ifdef cpu68k}

+ 90 - 0
tests/test/tcg1.pp

@@ -12,10 +12,28 @@ begin
 {$ifdef CPUI386}
 {$asmmode att}
   asm
+{$ifndef FPC_PIC}
     movl   %esp,before
     pushw  %es
     movl   %esp,after
     popw   %es
+{$else not FPC_PIC}
+    call   .LPIC
+.LPIC:
+    popl   %ecx
+{$ifdef darwin}
+    movl   %esp,before-.LPIC(%ecx)
+    pushw  %es
+    movl   %esp,after-.LPIC(%ecx)
+    popw   %es
+{$else darwin}
+    addl   $_GLOBAL_OFFSET_TABLE_,%ecx
+    movl   %esp,before@GOT(%ecx)
+    pushw  %es
+    movl   %esp,after@GOT(%ecx)
+    popw   %es
+{$endif darwin}
+{$endif not FPC_PIC}
   end;
   wpush:=before-after;
   if wpush<>2 then
@@ -24,10 +42,28 @@ begin
       haserror:=true;
     end;
   asm
+{$ifndef FPC_PIC}
     movl   %esp,before
     pushl  %es
     movl   %esp,after
     popl   %es
+{$else not FPC_PIC}
+    call   .LPIC
+.LPIC:
+    popl   %ecx
+{$ifdef darwin}
+    movl   %esp,before-.LPIC(%ecx)
+    pushl  %es
+    movl   %esp,after-.LPIC(%ecx)
+    popl   %es
+{$else darwin}
+    addl   $_GLOBAL_OFFSET_TABLE_,%ecx
+    movl   %esp,before@GOT(%ecx)
+    pushl  %es
+    movl   %esp,after@GOT(%ecx)
+    popl   %es
+{$endif darwin}
+{$endif not FPC_PIC}
   end;
   lpush:=before-after;
 
@@ -38,10 +74,28 @@ begin
     end;
 
   asm
+{$ifndef FPC_PIC}
     movl   %esp,before
     pushw  %gs
     movl   %esp,after
     popw   %gs
+{$else not FPC_PIC}
+    call   .LPIC
+.LPIC:
+    popl   %ecx
+{$ifdef darwin}
+    movl   %esp,before-.LPIC(%ecx)
+    pushw  %gs
+    movl   %esp,after-.LPIC(%ecx)
+    popw   %gs
+{$else darwin}
+    addl   $_GLOBAL_OFFSET_TABLE_,%ecx
+    movl   %esp,before@GOT(%ecx)
+    pushw  %gs
+    movl   %esp,after@GOT(%ecx)
+    popw   %gs
+{$endif darwin}
+{$endif not FPC_PIC}
   end;
   wpush:=before-after;
   if wpush<>2 then
@@ -50,10 +104,28 @@ begin
       haserror:=true;
     end;
   asm
+{$ifndef FPC_PIC}
     movl   %esp,before
     pushl  %gs
     movl   %esp,after
     popl   %gs
+{$else not FPC_PIC}
+    call   .LPIC
+.LPIC:
+    popl   %ecx
+{$ifdef darwin}
+    movl   %esp,before-.LPIC(%ecx)
+    pushl  %gs
+    movl   %esp,after-.LPIC(%ecx)
+    popl   %gs
+{$else darwin}
+    addl   $_GLOBAL_OFFSET_TABLE_,%ecx
+    movl   %esp,before@GOT(%ecx)
+    pushl  %gs
+    movl   %esp,after@GOT(%ecx)
+    popl   %gs
+{$endif darwin}
+{$endif not FPC_PIC}
   end;
   lpush:=before-after;
 
@@ -64,10 +136,28 @@ begin
     end;
 {$asmmode intel}
   asm
+{$ifndef FPC_PIC}
     mov    before,esp
     push   es
     mov    after,esp
     pop    es
+{$else not FPC_PIC}
+    call   @@LPIC
+@@LPIC:
+    pop    ecx
+{$ifdef darwin}
+    mov    [before-@@LPIC+ecx],esp
+    push   es
+    mov    [after-@@LPIC+ecx],esp
+    pop    es
+{$else darwin}
+    add    ecx,@_GLOBAL_OFFSET_TABLE_
+    mov    [ecx].OFFSET before,esp
+    push   es
+    mov    [ecx].OFFSET after,esp
+    pop    es
+{$endif darwin}
+{$endif not FPC_PIC}
   end;
   Writeln('Intel "push es" uses ',before-after,' bytes');
 {$endif CPUI386}

+ 19 - 1
tests/test/testsse2.pp

@@ -3,7 +3,7 @@
 uses
    mmx;
 
-{ only a small test to see if it works in principal }
+{ only a small test to see if it works in principle }
 
 var
   b : byte;
@@ -12,9 +12,27 @@ var
 begin
   if is_sse2_cpu then
     asm
+{$ifdef FPC_PIC}
+       call .LPIC
+.LPIC:
+       popl %ecx
+{$ifdef darwin}
+       movdqa    %xmm1,%xmm2
+       movdqa    q-.LPIC(%ecx),%xmm4
+       psubq     %xmm1,%xmm2
+       psubq     q-.LPIC(%ecx),%xmm4
+{$else darwin}
+       addl      $_GLOBAL_OFFSET_TABLE_,%ecx
+       movdqa    %xmm1,%xmm2
+       movdqa    q@GOT(%ecx),%xmm4
+       psubq     %xmm1,%xmm2
+       psubq     q@GOT(%ecx),%xmm4
+{$endif darwin}
+{$else FPC_PIC}
        movdqa    %xmm1,%xmm2
        movdqa    q,%xmm4
        psubq     %xmm1,%xmm2
        psubq     q,%xmm4
+{$endif FPC_PIC}
     end;
 end.

+ 1 - 0
tests/test/tfpu3.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { %NOTE= this test requires that nasm assembler is installed }
 { testfdiv variant with NASM output forced }
 {$ifdef go32v2}

+ 1 - 0
tests/test/tfpu4.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { testfdiv variant with GNU AS output forced }
 {$ifdef win32}
 {$ifdef VER1_0}

+ 1 - 0
tests/test/tfpu5.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { This test program deals with the
   the delicate problem of
   non commutative FPU instruction

+ 1 - 0
tests/webtbf/tw3931b.pp

@@ -1,5 +1,6 @@
 { %fail }
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$asmmode intel}
 

+ 1 - 0
tests/webtbs/tw0735.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 {$inline on}
 

+ 1 - 0
tests/webtbs/tw0761.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 Type TFather = Object A : Integer; end;
      TSon = Object (TFather) B : Integer; end;

+ 1 - 0
tests/webtbs/tw0892.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 
 
 {$asmmode intel}

+ 1 - 0
tests/webtbs/tw0919.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 var i:integer;
 {$asmmode intel}

+ 1 - 0
tests/webtbs/tw0944.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$ifdef TP}
 {$N+}
 {$endif TP}

+ 1 - 0
tests/webtbs/tw1023.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Source provided for Free Pascal Bug Report 1023 }
 { Submitted by "Denis Yarkovoy" on  2000-07-03 }
 { e-mail: [email protected] }

+ 1 - 0
tests/webtbs/tw1066a.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Source provided for Free Pascal Bug Report 1066 }
 { Submitted by "Fernando Oscar Schmitt" on  2000-07-24 }
 { e-mail: [email protected] }

+ 1 - 0
tests/webtbs/tw1066b.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {----------------cut here----------------}
 
 {$asmmode intel}

+ 1 - 0
tests/webtbs/tw1090.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 const
   Number = $7FFFFFF;

+ 1 - 0
tests/webtbs/tw1117.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 {$asmmode intel}
 var
   l1,l2 : longint;

+ 1 - 0
tests/webtbs/tw1902.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$ifdef fpc}
 {$MODE DELPHI}

+ 1 - 0
tests/webtbs/tw1950.pp

@@ -11,6 +11,7 @@ procedure Test(const T: TTest);
  begin
   if @T = nil then exit;
   // do something
+//  halt(1);
  end;
 
 begin

+ 1 - 0
tests/webtbs/tw2323.pp

@@ -1,4 +1,5 @@
 { %CPU=i386 }
+{ %OPT=-Cg- }
 { Source provided for Free Pascal Bug Report 2323 }
 { Submitted by "marco" on  2003-01-16 }
 { e-mail: [email protected] }

+ 1 - 0
tests/webtbs/tw2668.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 { %version=1.1 }
 { Source provided for Free Pascal Bug Report 2668 }
 { Submitted by "Marco" on  2003-09-06 }

+ 1 - 0
tests/webtbs/tw2806.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$ifdef fpc}{$asmmode intel}{$endif}
 

+ 1 - 1
tests/webtbs/tw2998.pp

@@ -1,5 +1,5 @@
 { %cpu=i386 }
-{ %OPT=-OaVARMIN=8 }
+{ %OPT=-OaVARMIN=8 -Cg- }
 
 { Source provided for Free Pascal Bug Report 2998 }
 { Submitted by "bartek" on  2004-03-02 }

+ 1 - 0
tests/webtbs/tw3093.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 { Source provided for Free Pascal Bug Report 3093 }
 { Submitted by "Dail Singleton" on  2004-05-08 }

+ 1 - 0
tests/webtbs/tw3274.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %opt=-Cg- }
 
 { Source provided for Free Pascal Bug Report 3274 }
 { Submitted by "Frank Kintrup" on  2004-08-27 }

+ 1 - 0
tests/webtbs/tw3577.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %opt=-Cg- }
 
 { Source provided for Free Pascal Bug Report 3577 }
 { Submitted by "Simon Kissel" on  2005-01-19 }

+ 1 - 0
tests/webtbs/tw3863.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %opt=-Cg- }
 
 { Source provided for Free Pascal Bug Report 3863 }
 { Submitted by "Jernej" on  2005-04-01 }

+ 1 - 0
tests/webtbs/tw3931a.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$asmmode intel}
 

+ 1 - 0
tests/webtbs/tw4240.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 { Source provided for Free Pascal Bug Report 4240 }
 { Submitted by "Den Jean" on  2005-07-30 }
 { e-mail: [email protected] }

+ 1 - 1
tests/webtbs/tw4388.pp

@@ -1,4 +1,4 @@
-{ %opt=-O2r }
+{ %opt=-O2r -Cg- }
 { %cpu=i386 }
 {$mode delphi}
 

+ 1 - 0
tests/webtbs/tw4450.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$ifdef fpc}{$asmmode intel}{$endif}
 

+ 1 - 0
tests/webtbs/tw5015.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 { Source provided for Free Pascal Bug Report 5015 }
 { Submitted by "Zeljan Rikalo" on  2006-04-15 }

+ 1 - 0
tests/webtbs/tw8195a.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$APPTYPE CONSOLE}
 

+ 1 - 0
tests/webtbs/tw8195b.pp

@@ -1,4 +1,5 @@
 { %cpu=i386 }
+{ %OPT=-Cg- }
 
 {$APPTYPE CONSOLE}