From 37201319bf44a5b61336a8273329212d109bc816 Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 8 Jan 2021 09:57:31 +0000 Subject: [PATCH 01/19] Add two new button to simplify inspecting evolutiontestsuite difference in time git-svn-id: trunk@48110 - --- tests/utils/testsuite/utests.pp | 36 ++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/tests/utils/testsuite/utests.pp b/tests/utils/testsuite/utests.pp index e40f57922c..01aa6b4dc0 100644 --- a/tests/utils/testsuite/utests.pp +++ b/tests/utils/testsuite/utests.pp @@ -153,6 +153,9 @@ const faction_compare_with_next = 6; faction_compare2_with_previous = 7; faction_compare2_with_next = 8; + faction_compare_both_with_previous = 9; + faction_compare_both_with_next = 10; + Function TestResultsTableName(const RunId : String) : string; var @@ -347,6 +350,18 @@ begin FCompareRunID:=FNext2RunID; ShowRunComparison; end; + faction_compare_both_with_previous : + begin + FRunID:=FPreviousRunID; + FCompareRunID:=FPrevious2RunID; + ShowRunComparison; + end; + faction_compare_both_with_next : + begin + FRunID:=FNextRunID; + FCompareRunID:=FNext2RunID; + ShowRunComparison; + end; {$ifdef TEST} 98 : begin @@ -402,6 +417,10 @@ begin FAction:=faction_compare2_with_previous else if S='Compare_right_to_next' then FAction:=faction_compare2_with_next + else if S='Compare_both_to_previous' then + FAction:=faction_compare_both_with_previous + else if S='Compare_both_to_next' then + FAction:=faction_compare_both_with_next else FAction:=StrToIntDef(S,0); S:=RequestVariables['limit']; @@ -1397,7 +1416,22 @@ begin ParaGraphStart; end; - EmitSubmitButton('action','Show/Compare'); + if (FPrevious2RunID<>'') and (FPreviousRunId<>'') then + begin + EmitSubmitButton('action','Compare_both_to_previous'); + AddNewPar:=true; + end; + if (FNext2RunID<>'') and (FNextRunId<>'') then + begin + EmitSubmitButton('action','Compare_both_to_next'); + AddNewPar:=true; + end; + if AddNewPar then + begin + ParagraphEnd; + ParaGraphStart; + end; + EmitSubmitButton('action','Show/Compare'); if FTestFileID<>'' then EmitSubmitButton('action','View_history'); EmitResetButton('','Reset form'); From a78332ae7f86c8098ea8a515b10ddb01490cf625 Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 8 Jan 2021 11:05:29 +0000 Subject: [PATCH 02/19] Add setting of all optimization debug macros with single DEBUG_ALL_OPT macro git-svn-id: trunk@48111 - --- compiler/fpcdefs.inc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/compiler/fpcdefs.inc b/compiler/fpcdefs.inc index 6b762b1c50..59b4c1f240 100644 --- a/compiler/fpcdefs.inc +++ b/compiler/fpcdefs.inc @@ -31,6 +31,31 @@ {$define USEINLINE} {$endif EXTDEBUG} +{$ifdef DEBUG_ALL_OPT} + { for aopt unit } + {$define DEBUG_OPTALLOC} + {$define DEBUG_INSTRUCTIONREGISTERDEPENDENCIES} + {for CPU/aoptcpu unit } + {$define DEBUG_AOPTCPU} + {$define DEBUG_PREREGSCHEDULER (arm specific) } + { for aoptobj unit } + {$define DEBUG_AOPTOBJ} + {$define ALLOCREGDEBUG} + { for optconstprop unit } + {$define DEBUG_CONSTPROP} + { for optcse unit } + {$define CSEDEBUG} + { for optdeadstore unit } + {$define DEBUG_DEADSTORE} + { for optdfa unit } + {$define DEBUG_DFA} + { for optloop unit } + {$define DEBUG_OPTFORLOOP} + {$define DEBUG_OPTSTRENGTH} + { for optvirt unit } + {$define DEBUG_DEVIRT} +{$endif} + {$define USEEXCEPT} {$ifdef VER3_0} From 0061301dbbf0f9f9256d81cb0b85cdc0bd531ded Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 8 Jan 2021 11:13:43 +0000 Subject: [PATCH 03/19] Fix compilation with -dALLOCREGDEBUG git-svn-id: trunk@48112 - --- compiler/aoptobj.pas | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/compiler/aoptobj.pas b/compiler/aoptobj.pas index fd14f81674..8b10fd0091 100644 --- a/compiler/aoptobj.pas +++ b/compiler/aoptobj.pas @@ -1382,12 +1382,10 @@ Unit AoptObj; removedSomething := false; firstRemovedWasAlloc := false; {$ifdef allocregdebug} - hp := tai_comment.Create(strpnew('allocating '+std_regname(newreg(R_INTREGISTER,supreg,R_SUBWHOLE))+ - ' from here...')); - insertllitem(asml,p1.previous,p1,hp); - hp := tai_comment.Create(strpnew('allocated '+std_regname(newreg(R_INTREGISTER,supreg,R_SUBWHOLE))+ - ' till here...')); - insertllitem(asml,p2,p2.next,hp); + hp := tai_comment.Create(strpnew('allocating '+std_regname(reg)+' from here...')); + insertllitem(p1.previous,p1,hp); + hp := tai_comment.Create(strpnew('allocated '+std_regname(reg)+' till here...')); + insertllitem(p2,p2.next,hp); {$endif allocregdebug} { do it the safe way: always allocate the full super register, as we do no register re-allocation in the peephole optimizer, From 7f775abb6dc5c5b3b3a1dfe347304a81d970df77 Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 8 Jan 2021 14:19:19 +0000 Subject: [PATCH 04/19] * throw a proper error if a contructur has a type parameter in delphi mode, resolves #37217 git-svn-id: trunk@48113 - --- .gitattributes | 1 + compiler/msg/errore.msg | 2 + compiler/msgidx.inc | 5 +- compiler/msgtxt.inc | 1076 +++++++++++++++++++-------------------- compiler/pdecsub.pas | 107 ++-- tests/webtbf/tw37217.pp | 12 + 6 files changed, 613 insertions(+), 590 deletions(-) create mode 100644 tests/webtbf/tw37217.pp diff --git a/.gitattributes b/.gitattributes index b6ed4a29e7..0177dd74e3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16689,6 +16689,7 @@ tests/webtbf/tw36720.pp svneol=native#text/pascal tests/webtbf/tw3680.pp svneol=native#text/plain tests/webtbf/tw36975.pp svneol=native#text/pascal tests/webtbf/tw3716.pp svneol=native#text/plain +tests/webtbf/tw37217.pp svneol=native#text/pascal tests/webtbf/tw37272b.pp svneol=native#text/pascal tests/webtbf/tw37303.pp -text svneol=native#text/pascal tests/webtbf/tw3738.pp svneol=native#text/plain diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg index 03a6425b66..997eef24f1 100644 --- a/compiler/msg/errore.msg +++ b/compiler/msg/errore.msg @@ -1622,6 +1622,8 @@ parser_e_location_regpair_only_data=03358_E_Only data registers are supported fo % AmigaOS/MorphOS syscall specific: for 64bit register pairs, only data registers are supported parser_e_location_regpair_only_consecutive=03359_E_Only consecutive registers are supported for explicit location register pairs % MorphOS syscall specific: only consecutive (f.e.: d1-d2) registers are supported for 64bit register pairs +parser_e_constructurs_cannot_take_type_parameters=03360_E_Constructors cannot take type parameters +% The use of type parameters in constructors is not allowed. % % \end{description} % diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc index ae1bede0fc..3e712aecf3 100644 --- a/compiler/msgidx.inc +++ b/compiler/msgidx.inc @@ -471,6 +471,7 @@ const parser_e_location_size_too_large=03357; parser_e_location_regpair_only_data=03358; parser_e_location_regpair_only_consecutive=03359; + parser_e_constructurs_cannot_take_type_parameters=03360; type_e_mismatch=04000; type_e_incompatible_types=04001; type_e_not_equal_types=04002; @@ -1135,9 +1136,9 @@ const option_info=11024; option_help_pages=11025; - MsgTxtSize = 86847; + MsgTxtSize = 86896; MsgIdxMax : array[1..20] of longint=( - 28,107,360,130,99,63,145,36,223,68, + 28,107,361,130,99,63,145,36,223,68, 63,20,30,1,1,1,1,1,1,1 ); diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc index 47574715f9..f16f94d17d 100644 --- a/compiler/msgtxt.inc +++ b/compiler/msgtxt.inc @@ -1,8 +1,8 @@ const msgtxt_codepage=20127; {$ifdef Delphi} -const msgtxt : array[0..000361] of string[240]=( +const msgtxt : array[0..000362] of string[240]=( {$else Delphi} -const msgtxt : array[0..000361,1..240] of char=( +const msgtxt : array[0..000362,1..240] of char=( {$endif Delphi} '01000_T_Compiler: $1'#000+ '01001_D_Compiler OS: $1'#000+ @@ -591,818 +591,818 @@ const msgtxt : array[0..000361,1..240] of char=( 'ter pairs'#000+ '03359_E_Only consecutive registers are supported for explicit location'+ ' register pairs'#000+ + '03360_E_Constructors cannot take type parameters'#000+ '04000_E_Type mismatch'#000+ '04001_E_Incompatible types: got "$1" expected "$2"'#000+ - '04002_E_Type mismatch between "$1" and "$2"'#000+ - '04003_E_Type identifier ex','pected'#000+ + '04002_E_Type mismatch',' between "$1" and "$2"'#000+ + '04003_E_Type identifier expected'#000+ '04004_E_Variable identifier expected'#000+ '04005_E_Integer expression expected, but got "$1"'#000+ '04006_E_Boolean expression expected, but got "$1"'#000+ '04007_E_Ordinal expression expected'#000+ - '04008_E_Pointer type expected, but got "$1"'#000+ - '04009_E_Class ty','pe expected, but got "$1"'#000+ + '04008_E_Poi','nter type expected, but got "$1"'#000+ + '04009_E_Class type expected, but got "$1"'#000+ '04011_E_Can'#039't evaluate constant expression'#000+ '04012_E_Set elements are not compatible'#000+ '04013_E_Operation not implemented for sets'#000+ - '04014_W_Automatic type conversion from floating type to COMP which is '+ - 'an integer type'#000+ - '04','015_H_Use DIV instead to get an integer result'#000+ + '04014_W_Automatic type conversion from ','floating type to COMP which i'+ + 's an integer type'#000+ + '04015_H_Use DIV instead to get an integer result'#000+ '04016_E_String types have to match exactly in $V+ mode'#000+ '04017_E_Succ or Pred on enums with assignments not possible'#000+ - '04018_E_Can'#039't read or write variables of this type'#000+ - '04019_E_Can'#039't use readln or',' writeln on typed file'#000+ + '04018_E_Can'#039't read or write v','ariables of this type'#000+ + '04019_E_Can'#039't use readln or writeln on typed file'#000+ '04020_E_Can'#039't use read or write on untyped file.'#000+ '04021_E_Type conflict between set elements'#000+ '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+ - '04023_E_Integer or real expression expected'#000+ - '04024_E_Wrong type ','"$1" in array constructor'#000+ + '04023_E_Intege','r or real expression expected'#000+ + '04024_E_Wrong type "$1" in array constructor'#000+ '04025_E_Incompatible type for arg no. $1: Got "$2", expected "$3"'#000+ '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+ - '04027_E_Illegal constant passed to internal math function'#000+ - '04028_E_Can'#039't take t','he address of constant expressions'#000+ + '04027_E_Illegal constant pass','ed to internal math function'#000+ + '04028_E_Can'#039't take the address of constant expressions'#000+ '04029_E_Argument cannot be assigned to'#000+ '04030_E_Can'#039't assign local procedure/function to procedure variabl'+ 'e'#000+ '04031_E_Can'#039't assign values to an address'#000+ - '04032_E_Can'#039't assign values to const variable'#000+ - '04033_E_Ar','ray type required'#000+ + '04032_E','_Can'#039't assign values to const variable'#000+ + '04033_E_Array type required'#000+ '04034_E_Interface type expected, but got "$1"'#000+ '04035_H_Mixing signed expressions and longwords gives a 64bit result'#000+ - '04036_W_Mixing signed expressions and cardinals here may cause a range'+ - ' check error'#000+ - '04037_E_Typecast has dif','ferent size ($1 -> $2) in assignment'#000+ + '04036_W_Mixing signed expressions and cardinals here may c','ause a ran'+ + 'ge check error'#000+ + '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+ '04038_E_Enums with assignments cannot be used as array index'#000+ '04039_E_Class or Object types "$1" and "$2" are not related'#000+ - '04040_W_Class types "$1" and "$2" are not related'#000+ - '04041_E_Class or interface type ','expected, but got "$1"'#000+ + '04040_W_Class types "$1" and "$2"',' are not related'#000+ + '04041_E_Class or interface type expected, but got "$1"'#000+ '04042_E_Type "$1" is not completely defined'#000+ '04043_W_String literal has more characters than short string length'#000+ - '04044_W_Comparison might be always false due to range of constant and '+ - 'expression'#000+ - '04045_W_Comparison might',' be always true due to range of constant and'+ - ' expression'#000+ + '04044_W_Comparison might be always false due to range of',' constant an'+ + 'd expression'#000+ + '04045_W_Comparison might be always true due to range of constant and e'+ + 'xpression'#000+ '04046_W_Constructing a class "$1" with abstract method "$2"'#000+ '04047_H_The left operand of the IN operator should be byte sized'#000+ - '04048_W_Type size mismatch, possible loss of data / range c','heck erro'+ + '04048_W_Ty','pe size mismatch, possible loss of data / range check erro'+ 'r'#000+ '04049_H_Type size mismatch, possible loss of data / range check error'#000+ '04050_E_The address of an abstract method cannot be taken'#000+ - '04051_E_Assignments to formal parameters and open arrays are not possi'+ - 'ble'#000+ - '04052_E_Constant Expression',' expected'#000+ + '04051_E_Assignments to formal parameters and open ar','rays are not pos'+ + 'sible'#000+ + '04052_E_Constant Expression expected'#000+ '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+ '04054_E_Illegal type conversion: "$1" to "$2"'#000+ '04055_H_Conversion between ordinals and pointers is not portable'#000+ - '04056_W_Conversion between ordinals and pointers is not po','rtable'#000+ + '04056_W_C','onversion between ordinals and pointers is not portable'#000+ '04057_E_Can'#039't determine which overloaded function to call'#000+ '04058_E_Illegal counter variable'#000+ '04059_W_Converting constant real value to double for C variable argume'+ - 'nt, add explicit typecast to prevent this.'#000+ - '04060_E_Class or COM interfac','e type expected, but got "$1"'#000+ + 'nt, add explicit typeca','st to prevent this.'#000+ + '04060_E_Class or COM interface type expected, but got "$1"'#000+ '04061_E_Constant packed arrays are not yet supported'#000+ '04062_E_Incompatible type for arg no. $1: Got "$2" expected "(Bit)Pack'+ 'ed Array"'#000+ - '04063_E_Incompatible type for arg no. $1: Got "$2" expected "(not pack'+ - 'ed) Arr','ay"'#000+ + '04063_E_Incompatible type fo','r arg no. $1: Got "$2" expected "(not pa'+ + 'cked) Array"'#000+ '04064_E_Elements of packed arrays cannot be of a type which need to be'+ ' initialised'#000+ '04065_E_Constant packed records and objects are not yet supported'#000+ - '04066_W_Arithmetic "$1" on untyped pointer is unportable to {$T+}, sug'+ - 'gest typecast'#000+ - '040','76_E_Can'#039't take address of a subroutine marked as local'#000+ + '04066_W_Arithmetic "$1" on untyped poi','nter is unportable to {$T+}, s'+ + 'uggest typecast'#000+ + '04076_E_Can'#039't take address of a subroutine marked as local'#000+ '04077_E_Can'#039't export subroutine marked as local from a unit'#000+ '04078_E_Type is not automatable: "$1"'#000+ - '04079_H_Converting the operands to "$1" before doing the add could pre'+ - 'vent overflow er','rors.'#000+ + '04079_H_Converting the operands to "$','1" before doing the add could p'+ + 'revent overflow errors.'#000+ '04080_H_Converting the operands to "$1" before doing the subtract coul'+ 'd prevent overflow errors.'#000+ '04081_H_Converting the operands to "$1" before doing the multiply coul'+ - 'd prevent overflow errors.'#000+ - '04082_W_Converting pointers to signed in','tegers may result in wrong c'+ - 'omparison results and range errors, use an unsigned type instead.'#000+ + 'd prevent overflow',' errors.'#000+ + '04082_W_Converting pointers to signed integers may result in wrong com'+ + 'parison results and range errors, use an unsigned type instead.'#000+ '04083_E_Interface type $1 has no valid GUID'#000+ '04084_E_Invalid selector name "$1"'#000+ - '04085_E_Expected Objective-C method, but got $1'#000+ - '04086_E_Expected Ob','jective-C method or constant method name'#000+ + '04085_E_Expected O','bjective-C method, but got $1'#000+ + '04086_E_Expected Objective-C method or constant method name'#000+ '04087_E_No type info available for this type'#000+ '04088_E_Ordinal or string expression expected'#000+ '04089_E_String expression expected'#000+ - '04090_W_Converting 0 to NIL'#000+ - '04091_E_Objective-C protocol type expected, b','ut got "$1"'#000+ + '04090_W_Converting 0 to ','NIL'#000+ + '04091_E_Objective-C protocol type expected, but got "$1"'#000+ '04092_E_The type "$1" is not supported for interaction with the Object'+ 'ive-C and the blocks runtime.'#000+ '04093_E_Class or objcclass type expected, but got "$1"'#000+ - '04094_E_Objcclass type expected'#000+ - '04095_W_Coerced univ parameter type in pr','ocedural variable may cause'+ - ' crash or memory corruption: $1 to $2'#000+ + '04094_E_Objcclass type e','xpected'#000+ + '04095_W_Coerced univ parameter type in procedural variable may cause c'+ + 'rash or memory corruption: $1 to $2'#000+ '04096_E_Type parameters of specializations of generics cannot referenc'+ 'e the currently specialized type'#000+ - '04097_E_Type parameters are not allowed on non-generic class/record/ob'+ - 'je','ct procedure or function'#000+ + '04097_E_Type parameters',' are not allowed on non-generic class/record/'+ + 'object procedure or function'#000+ '04098_E_Generic declaration of "$1" differs from previous declaration'#000+ '04099_E_Helper type expected'#000+ '04100_E_Record type expected'#000+ - '04101_E_Derived class helper must extend a subclass of "$1" or the cla'+ - 'ss itself'#000+ - '04102_E','_Derived record or type helper must extend "$1"'#000+ + '04101_E_Derived class helper must exte','nd a subclass of "$1" or the c'+ + 'lass itself'#000+ + '04102_E_Derived record or type helper must extend "$1"'#000+ '04103_E_Invalid assignment, procedures return no value'#000+ '04104_W_Implicit string type conversion from "$1" to "$2"'#000+ - '04105_W_Implicit string type conversion with potential data loss from '+ - '"$1" to "','$2"'#000+ + '04105_W_Implicit string type c','onversion with potential data loss fro'+ + 'm "$1" to "$2"'#000+ '04106_-W_Explicit string typecast from "$1" to "$2"'#000+ '04107_-W_Explicit string typecast with potential data loss from "$1" t'+ 'o "$2"'#000+ '04108_W_Unicode constant cast with potential data loss'#000+ - '04109_E_Range check error while evaluating constants',' ($1 must be bet'+ + '041','09_E_Range check error while evaluating constants ($1 must be bet'+ 'ween $2 and $3)'#000+ '04110_W_Range check error while evaluating constants ($1 must be betwe'+ 'en $2 and $3)'#000+ '04111_E_This type is not supported for the Default() intrinsic'#000+ - '04112_E_JVM virtual class methods cannot be static'#000+ - '04113_E_Fi','nal (class) fields can only be assigned in their class'#039+ - ' (class) constructor'#000+ + '04112_E_JVM ','virtual class methods cannot be static'#000+ + '04113_E_Final (class) fields can only be assigned in their class'#039' '+ + '(class) constructor'#000+ '04114_E_It is not possible to typecast untyped parameters on managed p'+ - 'latforms, simply assign a value to them instead.'#000+ - '04115_E_The assignment side of an expression ','cannot be typecasted to'+ - ' a supertype on managed platforms'#000+ + 'latforms, simply assign a value to them inste','ad.'#000+ + '04115_E_The assignment side of an expression cannot be typecasted to a'+ + ' supertype on managed platforms'#000+ '04116_-W_The interface method "$1" raises the visibility of "$2" to pu'+ 'blic when accessed via an interface instance'#000+ - '04117_E_The interface method "$1" has a higher visibility (public) t','h'+ - 'an "$2"'#000+ + '04117_E_The interfa','ce method "$1" has a higher visibility (public) t'+ + 'han "$2"'#000+ '04118_E_TYPEOF can only be used on object types with VMT'#000+ '04119_E_It is not possible to define a default value for a parameter o'+ 'f type "$1"'#000+ - '04120_E_Type "$1" cannot be extended by a type helper'#000+ - '04121_E_Procedure or function must be ','far in order to allow taking i'+ - 'ts address: "$1"'#000+ + '04120_E_Type "$1" cannot be extended by a t','ype helper'#000+ + '04121_E_Procedure or function must be far in order to allow taking its'+ + ' address: "$1"'#000+ '04122_W_Creating an instance of abstract class "$1"'#000+ '04123_E_Subroutine references cannot be declared as "of object" or "is'+ - ' nested", they can always refer to any kind of subroutine'#000+ - '04124_E_Proce','dure variables in that memory model do not store segmen'+ - 't information'#000+ + ' nested", they can alw','ays refer to any kind of subroutine'#000+ + '04124_E_Procedure variables in that memory model do not store segment '+ + 'information'#000+ '04125_W_The first value of a set constructur range is greater then the'+ - ' second value, so the range describes an empty set.'#000+ - '04126_E_C block reference must use CDECL or MWPAS','CAL calling convent'+ - 'ion.'#000+ + ' second value, so the range describes an empty set.'#000, + '04126_E_C block reference must use CDECL or MWPASCAL calling conventio'+ + 'n.'#000+ '04127_E_The interface type of the forward declaration and the declared'+ ' interface type do not match for interface $1'#000+ - '04128_E_Type not allowed for generic constant parameter: $1'#000+ - '04129_E_Can'#039't read or write variables of',' this type in iso mode'#000+ + '04128_E_Type not allowed for generic constant param','eter: $1'#000+ + '04129_E_Can'#039't read or write variables of this type in iso mode'#000+ '05000_E_Identifier not found "$1"'#000+ '05001_F_Internal Error in SymTableStack()'#000+ '05002_E_Duplicate identifier "$1"'#000+ '05003_H_Identifier already defined in $1 at line $2'#000+ - '05004_E_Unknown identifier "$1"'#000+ - '05005_E_Forward declara','tion not solved "$1"'#000+ + '05004_','E_Unknown identifier "$1"'#000+ + '05005_E_Forward declaration not solved "$1"'#000+ '05007_E_Error in type definition'#000+ '05009_E_Forward type not resolved "$1"'#000+ '05010_E_Only static variables can be used in static methods or outside'+ ' methods'#000+ - '05012_E_Record or object or class type expected'#000+ - '05013_E_Instances of',' classes or objects with an abstract method are '+ - 'not allowed'#000+ + '05012_E_Record or o','bject or class type expected'#000+ + '05013_E_Instances of classes or objects with an abstract method are no'+ + 't allowed'#000+ '05014_W_Label not defined "$1"'#000+ '05015_E_Label used but not defined "$1"'#000+ '05016_E_Illegal label declaration'#000+ - '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+ - '05018_E_Label not',' found'#000+ + '05017_E_GOTO and LABEL are',' not supported (use switch -Sg)'#000+ + '05018_E_Label not found'#000+ '05019_E_Identifier isn'#039't a label'#000+ '05020_E_Label already defined'#000+ '05021_E_Illegal type declaration of set elements'#000+ '05022_E_Forward class definition not resolved "$1"'#000+ - '05023_H_Unit "$1" not used in $2'#000+ + '05023_H_Unit "$1" not',' used in $2'#000+ '05024_H_Parameter "$1" not used'#000+ - '05025','_N_Local variable "$1" not used'#000+ + '05025_N_Local variable "$1" not used'#000+ '05026_H_Value parameter "$1" is assigned but never used'#000+ '05027_N_Local variable "$1" is assigned but never used'#000+ '05028_H_Local $1 "$2" is not used'#000+ - '05029_N_Private field "$1.$2" is never used'#000+ - '05030_N_Private fie','ld "$1.$2" is assigned but never used'#000+ + '05029_N_Privat','e field "$1.$2" is never used'#000+ + '05030_N_Private field "$1.$2" is assigned but never used'#000+ '05031_N_Private method "$1.$2" never used'#000+ '05032_E_Set type expected'#000+ '05033_W_Function result does not seem to be set'#000+ - '05034_W_Type "$1" is not aligned correctly in current record for C'#000+ - '05035_E_Unknown rec','ord field identifier "$1"'#000+ + '05034_W_Type "$1" is not aligned corr','ectly in current record for C'#000+ + '05035_E_Unknown record field identifier "$1"'#000+ '05036_W_Local variable "$1" does not seem to be initialized'#000+ '05037_W_Variable "$1" does not seem to be initialized'#000+ '05038_E_Identifier idents no member "$1"'#000+ - '05039_H_Found declaration: $1'#000+ - '05040_E_Data element too larg','e'#000+ + '05039_H_Fo','und declaration: $1'#000+ + '05040_E_Data element too large'#000+ '05042_E_No matching implementation for interface method "$1" found'#000+ '05043_W_Symbol "$1" is deprecated'#000+ '05044_W_Symbol "$1" is not portable'#000+ '05055_W_Symbol "$1" is not implemented'#000+ - '05056_E_Can'#039't create unique type from this type'#000+ - '05057_H_Local ','variable "$1" does not seem to be initialized'#000+ + '05056_E_Can'#039't',' create unique type from this type'#000+ + '05057_H_Local variable "$1" does not seem to be initialized'#000+ '05058_H_Variable "$1" does not seem to be initialized'#000+ '05059_W_Function result variable does not seem to be initialized'#000+ - '05060_H_Function result variable does not seem to be initialized'#000+ - '05061_W_Va','riable "$1" read but nowhere assigned'#000+ + '05060_H_Function result va','riable does not seem to be initialized'#000+ + '05061_W_Variable "$1" read but nowhere assigned'#000+ '05062_H_Found abstract method: $1'#000+ '05063_W_Symbol "$1" is experimental'#000+ '05064_W_Forward declaration "$1" not resolved, assumed external'#000+ - '05065_W_Symbol "$1" is belongs to a library'#000+ - '05066_W_Symbol "$1" is d','eprecated: "$2"'#000+ + '05065_W_Symbol "$1"',' is belongs to a library'#000+ + '05066_W_Symbol "$1" is deprecated: "$2"'#000+ '05067_E_Cannot find an enumerator for the type "$1"'#000+ '05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+ '05069_E_Cannot find a "Current" property in enumerator "$1"'#000+ - '05070_E_Mismatch between number of declared parameter','s and number of'+ + '0507','0_E_Mismatch between number of declared parameters and number of'+ ' colons in message string.'#000+ '05071_N_Private type "$1.$2" never used'#000+ '05072_N_Private const "$1.$2" never used'#000+ '05073_N_Private property "$1.$2" never used'#000+ - '05074_W_Unit "$1" is deprecated'#000+ + '05074_W_Unit "$1" is dep','recated'#000+ '05075_W_Unit "$1" is deprecated: "$2"'#000+ - '050','76_W_Unit "$1" is not portable'#000+ + '05076_W_Unit "$1" is not portable'#000+ '05077_W_Unit "$1" is belongs to a library'#000+ '05078_W_Unit "$1" is not implemented'#000+ '05079_W_Unit "$1" is experimental'#000+ - '05080_E_No full definition of the formally declared class "$1" is in s'+ - 'cope. Add the unit contain','ing its full definition to the uses clause'+ + '05080_E_No full definition of the formally decl','ared class "$1" is in'+ + ' scope. Add the unit containing its full definition to the uses clause'+ '.'#000+ '05081_E_Gotos into initialization or finalization blocks of units are '+ 'not allowed'#000+ '05082_E_Invalid external name "$1" for formal class "$2"'#000+ - '05083_E_Complete class definition with external name "$1"',' here'#000+ + '05083_E_','Complete class definition with external name "$1" here'#000+ '05084_W_Possible library conflict: symbol "$1" from library "$2" also '+ 'found in library "$3"'#000+ '05085_E_Cannot add implicit constructor '#039'Create'#039' because ident'+ 'ifier already used by "$1"'#000+ - '05086_E_Cannot generate default constructor for class',', because paren'+ + '0508','6_E_Cannot generate default constructor for class, because paren'+ 't has no parameterless constructor'#000+ '05087_D_Adding helper for $1'#000+ '05088_E_Found declaration: $1'#000+ '05089_W_Local variable "$1" of a managed type does not seem to be init'+ 'ialized'#000+ - '05090_W_Variable "$1" of a managed type does not seem',' to be initiali'+ + '0509','0_W_Variable "$1" of a managed type does not seem to be initiali'+ 'zed'#000+ '05091_H_Local variable "$1" of a managed type does not seem to be init'+ 'ialized'#000+ '05092_H_Variable "$1" of a managed type does not seem to be initialize'+ 'd'#000+ - '05093_W_Function result variable of a managed type does not seem to be'+ - ' ','initialized'#000+ + '05093_W_Function resul','t variable of a managed type does not seem to '+ + 'be initialized'#000+ '05094_H_Function result variable of a managed type does not seem to be'+ ' initialized'#000+ '05095_W_Duplicate identifier "$1"'#000+ - '05096_E_Generic type parameter "$1" does not match with the one in the'+ - ' declaration'#000+ - '05097_E_Generic type paramet','er declared as "$1"'#000+ + '05096_E_Generic type parameter "$1" does not match with the on','e in t'+ + 'he declaration'#000+ + '05097_E_Generic type parameter declared as "$1"'#000+ '05098_E_Record or object type expected'#000+ '06009_E_Parameter list size exceeds 65535 bytes'#000+ '06012_E_File types must be var parameters'#000+ - '06013_E_The use of a far pointer isn'#039't allowed there'#000+ - '06015_E_EXPORT declared functions cann','ot be called'#000+ + '06013_E_The use of a far pointer isn'#039't all','owed there'#000+ + '06015_E_EXPORT declared functions cannot be called'#000+ '06016_W_Possible illegal call of constructor or destructor'#000+ '06017_N_Inefficient code'#000+ '06018_W_Unreachable code'#000+ '06020_E_Abstract methods cannot be called directly'#000+ - '06027_DL_Register $1 weight $2 $3'#000+ + '06027_DL_Register ','$1 weight $2 $3'#000+ '06029_DL_Stack frame is omitted'#000+ - '0','6031_E_Object or class methods cannot be inline.'#000+ + '06031_E_Object or class methods cannot be inline.'#000+ '06032_E_Procvar calls cannot be inline.'#000+ '06033_E_No code for inline procedure stored'#000+ - '06035_E_Element zero of an ansi/wide- or longstring cannot be accessed'+ - ', use (set)length instead'#000+ - '06037_E_Con','structors or destructors cannot be called inside a '#039'w'+ - 'ith'#039' clause'#000+ + '06035_E_Element zero of an ansi/wide- or longstring cannot',' be access'+ + 'ed, use (set)length instead'#000+ + '06037_E_Constructors or destructors cannot be called inside a '#039'wit'+ + 'h'#039' clause'#000+ '06038_E_Cannot call message handler methods directly'#000+ '06039_E_Jump in or outside of an exception block'#000+ - '06040_E_Control flow statements are not allowed in a finally block'#000+ - '06041_','W_Parameters size exceeds limit for certain cpu'#039's'#000+ + '06040_E_Control flow sta','tements are not allowed in a finally block'#000+ + '06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+ '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+ '06043_E_Local variables size exceeds supported limit'#000+ '06044_E_BREAK not allowed'#000+ - '06045_E_CONTINUE not allowed'#000+ - '06046_F_Unknown compile','rproc "$1". Check if you use the correct run '+ - 'time library.'#000+ + '060','45_E_CONTINUE not allowed'#000+ + '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+ + 'me library.'#000+ '06047_F_Cannot find system type "$1". Check if you use the correct run'+ ' time library.'#000+ - '06048_H_Inherited call to abstract method ignored'#000+ - '06049_E_Goto label "$1" not defined or optimiz','ed away'#000+ + '06048_H_Inherited call to abstract method ignor','ed'#000+ + '06049_E_Goto label "$1" not defined or optimized away'#000+ '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+ 'ct run time library.'#000+ '06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+ - '06052_E_Label must be defined in the same scope as it is declared'#000+ - '06053_E','_Leaving procedures containing explicit or implicit exception'+ - 's frames using goto is not allowed'#000+ + '06052_E_Label must be de','fined in the same scope as it is declared'#000+ + '06053_E_Leaving procedures containing explicit or implicit exceptions '+ + 'frames using goto is not allowed'#000+ '06054_E_In ISO mode, the mod operator is defined only for positive quo'+ 'tient'#000+ - '06055_DL_Auto inlining: $1'#000+ - '06056_E_The function used, is not support','ed by the selected instruct'+ - 'ion set: $1'#000+ + '06055_DL_Auto inlin','ing: $1'#000+ + '06056_E_The function used, is not supported by the selected instructio'+ + 'n set: $1'#000+ '06057_F_Maximum number of units ($1) reached for the current target'#000+ '06058_N_Call to subroutine "$1" marked as inline is not inlined'#000+ - '06059_E_Case statement does not handle ordinal value "$1", and no els', - 'e/otherwise statement is present.'#000+ + '06059_E_Case stateme','nt does not handle ordinal value "$1", and no el'+ + 'se/otherwise statement is present.'#000+ '06060_W_Case statement does not handle all possible cases'#000+ '06061_W_The current subroutine "$1" cannot be compiled for the target '+ 'CPU, creating dummy'#000+ - '06062_W_The target CPU does not support preserving the reg','isters in '+ + '06062_W_T','he target CPU does not support preserving the registers in '+ 'subroutine "$1"'#000+ '07000_DL_Starting $1 styled assembler parsing'#000+ '07001_DL_Finished $1 styled assembler parsing'#000+ '07002_E_Non-label pattern contains @'#000+ - '07004_E_Error building record offset'#000+ + '07004_E_Error building record offset',#000+ '07005_E_OFFSET used without identifier'#000+ - '07006_E_T','YPE used without identifier'#000+ + '07006_E_TYPE used without identifier'#000+ '07007_E_Cannot use local variable or parameters here'#000+ '07008_E_Need to use OFFSET here'#000+ '07009_E_Need to use $ here'#000+ '07010_E_Cannot use multiple relocatable symbols'#000+ - '07011_E_Relocatable symbol can only be added'#000+ - '07012_E','_Invalid constant expression'#000+ + '070','11_E_Relocatable symbol can only be added'#000+ + '07012_E_Invalid constant expression'#000+ '07013_E_Relocatable symbol is not allowed'#000+ '07014_E_Invalid reference syntax'#000+ '07015_E_You cannot reach $1 from that code'#000+ - '07016_E_Local symbols/labels are not allowed as references'#000+ - '07017_E_Invalid base and index reg','ister usage'#000+ + '07016_E_Local symbols/labels are not allowed',' as references'#000+ + '07017_E_Invalid base and index register usage'#000+ '07018_W_Possible error in object field handling'#000+ '07019_E_Wrong scale factor specified'#000+ '07020_E_Multiple index register usage'#000+ '07021_E_Invalid operand type'#000+ - '07022_E_Invalid string as opcode operand: $1'#000+ - '07023_W_@CODE and @DATA not sup','ported'#000+ + '07022_E_Invalid string as o','pcode operand: $1'#000+ + '07023_W_@CODE and @DATA not supported'#000+ '07024_E_Null label references are not allowed'#000+ '07025_E_Divide by zero in asm evaluator'#000+ '07026_E_Illegal expression'#000+ '07027_E_Escape sequence ignored: $1'#000+ '07028_E_Invalid symbol reference'#000+ - '07029_W_Fwait can cause emulation problems with emu','387'#000+ + '07','029_W_Fwait can cause emulation problems with emu387'#000+ '07030_W_$1 without operand translated into $1P'#000+ '07031_W_ENTER instruction is not supported by Linux kernel'#000+ '07032_W_Calling an overload function in assembler'#000+ - '07033_E_Unsupported symbol type for operand'#000+ - '07034_E_Constant value out of bounds',#000+ + '07033_E_Unsupported symbol type',' for operand'#000+ + '07034_E_Constant value out of bounds'#000+ '07035_E_Error converting decimal $1'#000+ '07036_E_Error converting octal $1'#000+ '07037_E_Error converting binary $1'#000+ '07038_E_Error converting hexadecimal $1'#000+ '07039_H_$1 translated to $2'#000+ - '07040_W_$1 is associated to an overloaded function'#000+ - '07041_E_Cannot ','use SELF outside a method'#000+ + '07040_W_$1 is ass','ociated to an overloaded function'#000+ + '07041_E_Cannot use SELF outside a method'#000+ '07042_E_Cannot use OLDEBP outside a nested procedure'#000+ '07043_W_Procedures cannot return any value in asm code'#000+ '07044_E_SEG not supported'#000+ - '07045_E_Size suffix and destination or source size do not match'#000+ - '07046_W_Size suf','fix and destination or source size do not match'#000+ + '07045_E_Size suffix and destina','tion or source size do not match'#000+ + '07046_W_Size suffix and destination or source size do not match'#000+ '07047_E_Assembler syntax error'#000+ '07048_E_Invalid combination of opcode and operands'#000+ '07049_E_Assembler syntax error in operand'#000+ - '07050_E_Assembler syntax error in constant'#000+ - '07051_E_Invalid String ex','pression'#000+ + '07050_E_Assembler s','yntax error in constant'#000+ + '07051_E_Invalid String expression'#000+ '07052_W_Constant with symbol $1 for address which is not on a pointer'#000+ '07053_E_Unrecognized opcode $1'#000+ '07054_E_Invalid or missing opcode'#000+ - '07055_E_Invalid combination of prefix and opcode: $1'#000+ - '07056_E_Invalid combination of override and',' opcode: $1'#000+ + '07055_E_Invalid combination of prefix and opcod','e: $1'#000+ + '07056_E_Invalid combination of override and opcode: $1'#000+ '07057_E_Too many operands on line'#000+ '07058_W_NEAR ignored'#000+ '07059_W_FAR ignored'#000+ '07060_E_Duplicate local symbol $1'#000+ '07061_E_Undefined local symbol $1'#000+ - '07062_E_Unknown label identifier $1'#000+ + '07062_E_Unknown label identifier $1'#000, '07063_E_Invalid register name'#000+ - '07064_E_Invalid flo','ating point register name'#000+ + '07064_E_Invalid floating point register name'#000+ '07066_W_Modulo not supported'#000+ '07067_E_Invalid floating point constant $1'#000+ '07068_E_Invalid floating point expression'#000+ '07069_E_Wrong symbol type'#000+ - '07070_E_Cannot index a local var or parameter with a register'#000+ - '07071_E_Inva','lid segment override expression'#000+ + '07070_E_Cannot index a lo','cal var or parameter with a register'#000+ + '07071_E_Invalid segment override expression'#000+ '07072_W_Identifier $1 supposed external'#000+ '07073_E_Strings not allowed as constants'#000+ '07074_E_No type of variable specified'#000+ - '07075_E_Assembler code not returned to text section'#000+ - '07076_E_Not a directive or local symb','ol $1'#000+ + '07075_E_Assembler code not returned to t','ext section'#000+ + '07076_E_Not a directive or local symbol $1'#000+ '07077_E_Using a defined name as a local label'#000+ '07078_E_Dollar token is used without an identifier'#000+ '07079_W_32bit constant created for address'#000+ - '07080_N_.align is target specific, use .balign or .p2align'#000+ - '07081_E_Cannot directly access fiel','ds of pointer-based parameters'#000+ + '07080_N_.align is target specific, use .balig','n or .p2align'#000+ + '07081_E_Cannot directly access fields of pointer-based parameters'#000+ '07082_E_Can'#039't access fields of objects/classes directly'#000+ '07083_E_No size specified and unable to determine the size of the oper'+ 'ands'#000+ - '07084_E_Cannot use RESULT in this function'#000+ - '07086_W_"$1" without operand transl','ated into "$1 %st,%st(1)"'#000+ + '07084_E_Cannot use RESULT in ','this function'#000+ + '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+ '07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+ '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+ '07089_E_Char < not allowed here'#000+ - '07090_E_Char > not allowed here'#000+ + '07090_E_Char > not allowed he','re'#000+ '07093_W_ALIGN not supported'#000+ - '07094_E_Inc and De','c cannot be together'#000+ + '07094_E_Inc and Dec cannot be together'#000+ '07095_E_Invalid register list for MOVEM or FMOVEM'#000+ '07096_E_Reglist invalid for opcode'#000+ '07097_E_Higher cpu mode required ($1)'#000+ - '07098_W_No size specified and unable to determine the size of the oper'+ - 'ands, using DWORD as defau','lt'#000+ + '07098_W_No size specified and unable to determi','ne the size of the op'+ + 'erands, using DWORD as default'#000+ '07099_E_Syntax error while trying to parse a shifter operand'#000+ '07100_E_Address of packed component is not at a byte boundary'#000+ - '07101_W_No size specified and unable to determine the size of the oper'+ - 'ands, using BYTE as default'#000+ - '07102_W_Use of $','1 for parameters invalid here'#000+ + '07101_W_No size specified and unable to determine the size of the',' op'+ + 'erands, using BYTE as default'#000+ + '07102_W_Use of $1 for parameters invalid here'#000+ '07103_W_Use of $1 is not compatible with regcall convention'#000+ '07104_W_Use of $1 is not recommended for local variable access'#000+ - '07105_W_Use of $1, access may cause a crash or value may be lost'#000+ - '07106_E_VMTOffset must',' be used in combination with a virtual method,'+ - ' and "$1" is not virtual'#000+ + '07105_W_Use of $1, access may cause a ','crash or value may be 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+ - '07108_E_All registers in a register set must be of the same kind and w'+ - 'idth'#000+ + '07108_E_All registers in a register set must be of the same kind a','nd'+ + ' width'#000+ '07109_E_A register set cannot be empty'#000+ - '0','7110_W_@GOTPCREL is useless and potentially dangerous for local sym'+ - 'bols'#000+ + '07110_W_@GOTPCREL is useless and potentially dangerous for local symbo'+ + 'ls'#000+ '07111_W_Constant with general purpose segment register'#000+ '07112_E_Invalid offset value for $1'#000+ - '07113_E_Invalid register for $1'#000+ - '07114_E_SEH directives are allowed only in pu','re assembler procedures'+ - #000+ + '07113_E_Invalid register for',' $1'#000+ + '07114_E_SEH directives are allowed only in pure assembler procedures'#000+ '07115_E_Directive "$1" is not supported for the current target'#000+ '07116_E_This function'#039's result location cannot be encoded directly'+ - ' in a single operand when "nostackframe" is used'#000+ - '07117_E_GOTPCREL references in Intel a','ssembler syntax cannot contain'+ - ' a base or index register, and their offset must 0.'#000+ + ' in a single operand when "nostackfram','e" is used'#000+ + '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+ + ' base or index register, and their offset must 0.'#000+ '07118_E_The current target does not support GOTPCREL relocations'#000+ - '07119_W_Exported/global symbols should be accessed via the GOT'#000+ - '07120_W_Check size of memory o','perand "$1"'#000+ + '07119_W_Exported/global symbols should be ac','cessed via the GOT'#000+ + '07120_W_Check size of memory operand "$1"'#000+ '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ 'ts, but expected [$3 bits]"'#000+ '07122_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ - 'ts, but expected [$3 bits + $4 byte offset]"'#000+ - '07123_W_Check "','$1: offset of memory operand is negative "$2 byte"'#000+ + 'ts, but exp','ected [$3 bits + $4 byte offset]"'#000+ + '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+ '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+ - 'erent definitions of the memory size =>> map to $2 (smallest option)"'#000+ - '07125_E_Invalid register used in memory reference',' expression: "$1"'#000+ + 'erent definitions of the memory size =>> map to $2 (smallest option)"'#000, + '07125_E_Invalid register used in memory reference expression: "$1"'#000+ '07126_E_SEG used without identifier'#000+ '07127_E_@CODE and @DATA can only be used with the SEG operator'#000+ '07128_E_Not enough space (16 bits required) for the segment constant o'+ - 'f symbol $1'#000+ - '07129_E_Invalid value of .code directive ','constant'#000+ + 'f sy','mbol $1'#000+ + '07129_E_Invalid value of .code directive constant'#000+ '07130_W_No size specified and unable to determine the size of the cons'+ 'tant, using BYTE as default'#000+ '07131_W_No size specified and unable to determine the size of the cons'+ - 'tant, using WORD as default'#000+ - '07132_E_Cannot override ES segment'#000, + 'tant, using WO','RD as default'#000+ + '07132_E_Cannot override ES segment'#000+ '07133_W_Reference is not valid here (expected "$1")'#000+ '07134_E_Address sizes do not match'#000+ '07135_E_Instruction "POP CS" is not valid for the current target'#000+ - '07136_W_Instruction "POP CS" is not portable (it only works on 8086 an'+ - 'd 8088 CPUs)'#000+ - '07137','_E_Label $1 can only be declared public before it'#039's defined'+ - #000+ + '07136_W_Instruction "POP CS" is not por','table (it only works on 8086 '+ + 'and 8088 CPUs)'#000+ + '07137_E_Label $1 can only be declared public before it'#039's defined'#000+ '07138_E_Local label $1 cannot be declared public'#000+ '07139_E_Cannot use multiple segment overrides'#000+ - '07140_W_Multiple segment overrides (only the last one will take effect'+ - ')'#000+ - '07141_W_Segme','nt base $1 will be generated, but is ignored by the CPU'+ - ' in 64-bit mode'#000+ + '07140_W_Multiple segment overrides (','only the last one will take effe'+ + 'ct)'#000+ + '07141_W_Segment base $1 will be generated, but is ignored by the CPU i'+ + 'n 64-bit mode'#000+ '07142_E_Mismatch broadcasting elements (expected: {$1} found: {$2})'#000+ '07143_E_Invalid arrangement specifier "$1"'#000+ - '07144_E_Registers in a register set must be consecutive.'#000+ - '0','8000_F_Too many assembler files'#000+ + '07144_E_R','egisters in a register set must be consecutive.'#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 binary writers'#000+ - '08004_E_Allocating of data is only allowed in bss section'#000+ - '08005_F_No binary writer sele','cted'#000+ + '08004_E_Allocating of data is only all','owed 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 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+ + '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 supported for this target'#000+ - '08015_E_Asm: Extended type not supported for this target'#000+ - '08016_E_Asm: Duplicate lab','el $1'#000+ + '08015_E_Asm: Extended type not sup','ported 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+ - '08021_E_Asm: 64 Bit operands not supported'#000+ - '08022_E_Asm: AH,BH,CH or DH cannot be used ','in an instruction requiri'+ - 'ng REX prefix'#000+ + '08021_E_Asm: 64 Bit operands not supp','orted'#000+ + '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+ + ' REX prefix'#000+ '08023_E_Missing .seh_endprologue directive'#000+ '08024_E_Function prologue exceeds 255 bytes'#000+ - '08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+ - '08026_F_Relocation count for section $1 exceeds ','65535'#000+ + '08025_E_.seh_handlerdata directive without preceding .seh_handler',#000+ + '08026_F_Relocation count for section $1 exceeds 65535'#000+ '08027_N_Change of bind type of symbol $1 from $2 to $3 after use'#000+ '08028_H_Change of bind type of symbol $1 from $2 to $3 after use'#000+ '08029_E_Asm: 32 Bit references not supported'#000+ - '08030_F_Code segment too large'#000+ - '08031_F_Data segment too lar','ge'#000+ + '08030_F_Co','de segment too large'#000+ + '08031_F_Data segment too large'#000+ '08032_E_Instruction not supported by the selected instruction set'#000+ '08033_E_Asm: conditional branch destination is out of range'#000+ - '08034_E_Asm: RIP cannot be used as index register or with another regi'+ - 'ster in a reference'#000+ - '08035_F_Illegal funct','ion size for SEH function'#000+ + '08034_E_Asm: RIP cannot be used as index register or with anot','her re'+ + 'gister in a reference'#000+ + '08035_F_Illegal function size for SEH function'#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 (error code: $2)'#000+ + '09003_E_Can'#039't create object file: $1 (error code: $2)'#000, '09004_E_Can'#039't create archive file: $1'#000+ - '09005_E_Ass','embler $1 not found, switching to external assembling'#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'+ + '09008_E_Can'#039't call the assembler, error $1 switching to external a', 'ssembling'#000+ '09009_I_Assembling $1'#000+ - '09010_I_Assemblin','g 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+ + '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+ + '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+ - '09035_E_Creation of Static Libraries not supported'#000+ - '09020_I_Closing s','cript $1'#000+ + '09035_E_Creation of',' Static Libraries not supported'#000+ + '09020_I_Closing script $1'#000+ '09021_E_Resource compiler "$1" not found, switching to external mode'#000+ '09022_I_Compiling resource $1'#000+ '09023_T_Unit $1 cannot be statically linked, switching to smart linkin'+ 'g'#000+ - '09024_T_Unit $1 cannot be smart linked, switching to static ','linking'#000+ + '09024_T_Uni','t $1 cannot be smart linked, switching to static linking'#000+ '09025_T_Unit $1 cannot be shared linked, switching to static linking'#000+ '09026_E_Unit $1 cannot be smart or static linked'#000+ '09027_E_Unit $1 cannot 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 command line'#000+ '09029_E_Error while compiling resources'#000+ '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+ 'al mode'#000+ '09031_E_Can'#039't open resource file "$1"'#000+ - '09032_E_Can'#039't write resource file "$1"'#000+ - '09033_N_File "$1" not found for backquoted cat c','ommand'#000+ + '09032_E_Can'#039't write resource file "$1"',#000+ + '09033_N_File "$1" not found for backquoted cat command'#000+ '09034_W_"$1" not found, this will probably cause a linking failure'#000+ '09128_F_Can'#039't post process 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 un','initialized data: $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+ '09134_X_Stack space committed: $1 bytes'#000+ '09200_F_Executable image size is too big for $1 target.'#000+ - '09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+ - ' "$2".'#000+ - '0','9202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+ + '09201_W_Object file "$1" cont','ains 32-bit absolute relocation to symb'+ + 'ol "$2".'#000+ + '09202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+ '09203_E_Code segment "$1" too large (exceeds 64k by $2 bytes)'#000+ '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000+ - '09205_E_Segment "$1" too large (exceeds 64k by $2 bytes)'#000, + '09205_E_','Segment "$1" too large (exceeds 64k by $2 bytes)'#000+ '09206_E_Group "$1" too large (exceeds 64k by $2 bytes)'#000+ '09207_E_Cannot create a .COM file, because the program contains segmen'+ 't relocations'#000+ - '09208_W_Program "$1" uses experimental CheckPointer option'#000+ + '09208_W_Program "$1" uses experimental CheckPointer ','option'#000+ '09209_E_Multiple defined symbol "$1"'#000+ - '09210','_E_COMDAT selection mode $1 not supported (section: "$1")'#000+ + '09210_E_COMDAT selection mode $1 not supported (section: "$1")'#000+ '09211_E_Associative section expected for COMDAT section "$1"'#000+ '09212_E_COMDAT section selection mode doesn'#039't match for section "$'+ - '1" and symbol "$2"'#000+ - '09213_E_Associative COMDAT section f','or section "$1" not found'#000+ + '1" and',' symbol "$2"'#000+ + '09213_E_Associative COMDAT section for section "$1" not found'#000+ '09214_D_Discarding duplicate symbol "$1" due to COMDAT selection mode'#000+ '09215_D_Discarding duplicate symbol "$1" with same size due to COMDAT '+ 'selection mode'#000+ - '09216_D_Discarding duplicate symbol "$1" with same content ','due to CO'+ + '09216_D_Di','scarding duplicate symbol "$1" with same content due to CO'+ 'MDAT selection mode'#000+ '09217_D_Replacing duplicate symbol "$1" with smaller size due to COMDA'+ 'T selection mode'#000+ '09218_E_Size of duplicate COMDAT symbol "$1" differs'#000+ - '09219_E_Content of duplicate COMDAT symbol "$1" differs'#000+ - '09220_E_COMDAT ','selection mode for symbol "$1" differs'#000+ + '09219_E_Content of dup','licate COMDAT symbol "$1" differs'#000+ + '09220_E_COMDAT selection mode for symbol "$1" differs'#000+ '09221_E_Undefined symbol: $1 (first seen in $2)'#000+ '09222_E_Undefined symbol: $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+ + '10003_U_','PPU Flags: $1'#000+ '10004_U_PPU Crc: $1'#000+ - '10005_U_PPU Tim','e: $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+ '10008_U_PPU Invalid Version $1'#000+ '10009_U_PPU is compiled for another processor'#000+ - '10010_U_PPU is compiled for another target'#000+ + '10010_U_PPU is compiled for anot','her target'#000+ '10011_U_PPU Source: $1'#000+ - '10012_U_Writing',' $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 entry: $1'#000+ '10017_F_PPU Dbx count problem'#000+ - '10018_E_Illegal unit name: $1 (expecting $2)'#000+ + '10018_E_Illegal unit name: ','$1 (expecting $2)'#000+ '10019_F_Too much units'#000+ - '10020_F_','Circular unit reference between $1 and $2'#000+ + '10020_F_Circular unit reference between $1 and $2'#000+ '10021_F_Can'#039't compile unit $1, no sources available'#000+ '10022_F_Can'#039't find unit $1 used by $2'#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 syst','em unit requires the -Us switch'#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+ - '10029_U_Recompiling $1, source found only'#000+ - '10030_U_Recompiling unit, st','atic lib is older than ppufile'#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+ - '10033_U_Recompiling unit, obj is older than asm'#000+ + '10033_U_Recompiling unit, obj is older t','han asm'#000+ '10034_U_Parsing interface of $1'#000+ - '10035_U_P','arsing implementation 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 modified include files'#000+ - '10041_U_File $1 is newer than the one used for creating PPU file $2'#000+ - '10042_U_Tryi','ng to use a unit which was compiled with a different FPU'+ - ' mode'#000+ + '10041_U_File $1 is newer than t','he one used for creating 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 changed for unit $1'#000+ - '10046_U_Implementation CRC changed for unit $1'#000+ - '1004','7_U_Finished compiling unit $1'#000+ + '10','046_U_Implementation CRC changed for unit $1'#000+ + '10047_U_Finished compiling unit $1'#000+ '10048_U_Adding dependency: $1 depends on $2'#000+ '10049_U_No reload, is caller: $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+ + '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+ '10058_U_Re-resolving unit $1'#000+ - '10059_U_Skipping re-resolving unit $1, still loading used units'#000+ - '10','060_U_Unloading resource unit $1 (not needed)'#000+ + '10059_U_Skipping ','re-resolving unit $1, still loading used units'#000+ + '10060_U_Unloading resource unit $1 (not needed)'#000+ '10061_E_Unit $1 was compiled using a different whole program optimizat'+ 'ion feedback input ($2, $3); recompile it without wpo or use the same '+ - 'wpo feedback input file for this compilation invocatio','n'#000+ + 'wpo f','eedback input file for this compilation invocation'#000+ '10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+ '10063_U_PPU is compiled for another i8086 memory model'#000+ '10064_U_Loading unit $1 from package $2'#000+ - '10065_F_Internal type "$1" was not found. Check if you use the correct'+ - ' run',' time library.'#000+ + '10065_F_Internal type "$1','" was not found. Check if you use the corre'+ + 'ct run time library.'#000+ '10066_F_Internal type "$1" does not look as expected. Check if you use'+ ' the correct run time library.'#000+ '10067_U_Skipping unit, PPU and compiler have to be both compiled with '+ - 'or without LLVM support'#000+ - '11000_O_$1 [options] [options]'#000+ + 'or wi','thout LLVM support'#000+ + '11000_O_$1 [options] [options]'#000+ '11001_W_Only one source file supported, changing source file to compil'+ 'e from "$1" into "$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 li','ne'#000+ + '11003_E_Nested response files are not su','pported'#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 from $1'#000+ - '11011_W_Target is already set ','to: $1'#000+ + '11010_D_Reading furth','er 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_In options file $1 at line $2 too many #IF(N)DEFs encountered'#000+ - '11014_F_In options file $1 at line $2 unexpected #ENDIFs encountered'#000+ - '11015_F_Open conditiona','l at the end of the options file'#000+ + '11014_F_In options file $1 at line $2 unexp','ected #ENDIFs encountered'+ + #000+ + '11015_F_Open conditional at the end of the options 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 u','se $2'#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 env','ironment $1'#000+ + '11026_T_Reading opti','ons from file $1'#000+ + '11027_T_Reading options from environment $1'#000+ '11028_D_Handling option "$1"'#000+ '11029_O_*** 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_Interpret','ing file option "$1"'#000+ + '11036_D_Int','erpreting firstpass option "$1"'#000+ + '11033_D_Interpreting file option "$1"'#000+ '11034_D_Reading config file "$1"'#000+ '11035_D_Found source file name "$1"'#000+ '11039_E_Unknown codepage "$1"'#000+ '11040_F_Config file $1 is a directory'#000+ - '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+ - 'ugging disab','led'#000+ + '11041_W_Assembler output selected',' "$1" cannot generate debug info, d'+ + 'ebugging disabled'#000+ '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+ '11043_F_In options file $1 at line $2 #ELSE directive without #IF(N)DE'+ 'F found'#000+ - '11044_F_Option "$1" is not, or not yet, supported on the current targe'+ - 't platform'#000+ - '11045_F_T','he feature "$1" is not, or not yet, supported on the select'+ - 'ed target platform'#000+ + '11044_F_Option "$1" is not, or not yet, s','upported on the current tar'+ + 'get platform'#000+ + '11045_F_The feature "$1" is not, or not yet, supported on the selected'+ + ' target platform'#000+ '11046_N_DWARF debug information cannot be used with smart linking on t'+ 'his target, switching to static linking'#000+ - '11047_W_Option "$1" is ignored for the current targe','t platform.'#000+ + '110','47_W_Option "$1" is ignored for the current target platform.'#000+ '11048_W_Disabling external debug information because it is unsupported'+ ' for the selected target/debug format combination.'#000+ - '11049_N_DWARF debug information cannot be used with smart linking with'+ - ' external assembler, disabling static',' library creation.'#000+ + '11049_N_DWARF debug information cannot be used with smart ','linking wi'+ + 'th external assembler, disabling static library creation.'#000+ '11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+ 'e: $1'#000+ '11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+ 'ble: $1'#000+ - '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when u','s'+ + '11052_E_You must u','se a FPU type of VFPV2, VFPV3 or VFPV3_D16 when us'+ 'ing the EABIHF ABI target'#000+ '11053_W_The selected debug format is not supported on the current targ'+ 'et, not changing the current setting'#000+ '11054_E_Argument to "$1" is missing'#000+ - '11055_E_Malformed parameter: $1'#000+ - '11056_W_Smart linking requires externa','l linker'#000+ + '11055_E_Malformed par','ameter: $1'#000+ + '11056_W_Smart linking requires external linker'#000+ '11057_E_Creating .COM files is not supported in the current memory mod'+ 'el. Only the tiny memory model supports making .COM files.'#000+ - '11058_W_Experimental CheckPointer option not enabled because it is inc'+ - 'omptatible with -Ur option.'#000+ - '1105','9_E_Unsupported target architecture -P$1, invoke the "fpc" compi'+ - 'ler driver instead.'#000+ + '11058_W_Experimental CheckPointer option not enabled ','because it is i'+ + 'ncomptatible with -Ur option.'#000+ + '11059_E_Unsupported target architecture -P$1, invoke the "fpc" compile'+ + 'r driver instead.'#000+ '11060_E_Feature switches are only supported while compiling the system'+ ' unit.'#000+ - '11061_N_The selected debug format is not supported by the internal lin'+ - 'ker, swit','ching to external linking'#000+ + '11061_N_The selected debug for','mat is not supported by the internal l'+ + 'inker, switching to external linking'#000+ '11062_E_You can not use both options ($1) ($2) at same time.'#000+ '12000_F_Cannot open whole program optimization feedback file "$1"'#000+ - '12001_D_Processing whole program optimization information in wpo feedb'+ - 'ack file "$1"'#000+ - '120','02_D_Finished processing the whole program optimization informati'+ - 'on in wpo feedback file "$1"'#000+ + '12001_D_Processing whole program optim','ization information in wpo fee'+ + 'dback file "$1"'#000+ + '12002_D_Finished processing the whole program optimization information'+ + ' in wpo feedback file "$1"'#000+ '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+ 'ck file'#000+ - '12004_W_No handler registered for whole program optimization section',' '+ - '"$2" at line $1 of wpo feedback file, ignoring'#000+ + '12004_W_No handler ','registered for whole program optimization section'+ + ' "$2" at line $1 of wpo feedback file, ignoring'#000+ '12005_D_Found whole program optimization section "$1" with information'+ ' about "$2"'#000+ - '12006_F_The selected whole program optimizations require a previously '+ - 'generated feedback file (use -Fw to spec','ify)'#000+ + '12006_F_The selected whole program optimizations require a pr','eviousl'+ + 'y generated feedback file (use -Fw to specify)'#000+ '12007_E_No collected information necessary to perform "$1" whole progr'+ 'am optimization found'#000+ '12008_F_Specify a whole program optimization feedback file to store th'+ - 'e generated info in (using -FW)'#000+ - '12009_E_Not generating any whole program ','optimization information, y'+ - 'et a feedback file was specified (using -FW)'#000+ + 'e generated info in (usi','ng -FW)'#000+ + '12009_E_Not generating any whole program optimization information, yet'+ + ' a feedback file was specified (using -FW)'#000+ '12010_E_Not performing any whole program optimizations, yet an input f'+ 'eedback file was specified (using -Fw)'#000+ - '12011_D_Skipping whole program optimization section "$1", b','ecause no'+ + '12011_D_Sk','ipping whole program optimization section "$1", because no'+ 't needed by the requested optimizations'#000+ '12012_W_Overriding previously read information for "$1" from feedback '+ 'input file using information in section "$2"'#000+ - '12013_E_Cannot extract symbol liveness information from program when s'+ - 'trippi','ng symbols, use -Xs-'#000+ + '12013_E_Cannot extract symb','ol liveness information from program when'+ + ' stripping symbols, use -Xs-'#000+ '12014_E_Cannot extract symbol liveness information from program when w'+ 'hen not linking'#000+ '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+ - 'n from linked program'#000+ - '12016_E_Error during reading symbol liven','ess information produced by'+ - ' "$1"'#000+ + 'n from linked ','program'#000+ + '12016_E_Error during reading symbol liveness information produced by "'+ + '$1"'#000+ '12017_F_Error executing "$1" (exitcode: $2) to extract symbol informat'+ 'ion from linked program'#000+ - '12018_E_Collection of symbol liveness information can only help when u'+ - 'sing smart linking, use -CX -XX'#000+ - '12019_E_Can','not create specified whole program optimisation feedback '+ - 'file "$1"'#000+ + '12018_E_Collection of symbol liveness information can only help ','when'+ + ' using smart linking, use -CX -XX'#000+ + '12019_E_Cannot create specified whole program optimisation feedback fi'+ + 'le "$1"'#000+ '13001_F_Can'#039't find package $1'#000+ '13002_U_PCP file for package $1 found'#000+ '13003_E_Duplicate package $1'#000+ - '13004_E_Unit $1 can not be part of a package'#000+ - '13005_N_Unit $1 is implicitely ','imported into package $2'#000+ + '13004_E_Unit $1 can not be ','part of a package'#000+ + '13005_N_Unit $1 is implicitely imported into package $2'#000+ '13006_F_Failed to create PCP file $2 for package $1'#000+ '13007_F_Failed to read PCP file for package $1'#000+ '13008_T_PCP loading $1'#000+ '13009_U_PCP Name: $1'#000+ '13010_U_PCP Flags: $1'#000+ - '13011_U_PCP Crc: $1'#000+ + '1','3011_U_PCP Crc: $1'#000+ '13012_U_PCP Time: $1'#000+ - '13013_U_P','CP File too short'#000+ + '13013_U_PCP File too short'#000+ '13014_U_PCP Invalid Header (no PCP at the begin)'#000+ '13015_U_PCP Invalid Version $1'#000+ '13016_U_PCP is compiled for another processor'#000+ '13017_U_PCP is compiled for another target'#000+ - '13018_U_Writing $1'#000+ + '1301','8_U_Writing $1'#000+ '13019_F_Can'#039't Write PCP-File'#000+ - '13020','_F_Error reading PCP-File'#000+ + '13020_F_Error reading PCP-File'#000+ '13021_F_Unexpected end of PCP-File'#000+ '13022_F_Invalid PCP-File entry: $1'#000+ '13023_U_Trying to use a unit which was compiled with a different FPU m'+ 'ode'#000+ - '13024_T_Packagesearch: $1'#000+ + '13024_T_Packagesearch',': $1'#000+ '13025_U_Required package $1'#000+ - '13026_U_Containe','d unit $1'#000+ + '13026_U_Contained unit $1'#000+ '13027_E_Unit $1 is already contained in package $2'#000+ '13028_W_Unit $1 is imported from indirectly required package $2'#000+ '13029_U_PPL filename $1'#000+ - '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPC'+ - 'CPU'#010+ - 'Copyright (c) 199','3-2020 by Florian Klaempfl and others'#000+ + '11023_Free Pascal Compiler version $FPCFUL','LVERSION [$FPCDATE] for $F'+ + 'PCCPU'#010+ + 'Copyright (c) 1993-2020 by Florian Klaempfl and others'#000+ '11024_Free Pascal Compiler version $FPCVERSION'#010+ #010+ 'Compiler date : $FPCDATE'#010+ 'Compiler CPU target: $FPCCPU'#010+ #010+ - 'Supported targets (targets marked with '#039'{*}'#039' are under develop'+ - 'ment):'#010+ + 'Supported targets (targets marked with '#039'{*}'#039' ','are under devel'+ + 'opment):'#010+ ' $OSTARGETS'#010+ #010+ - 'Supported C','PU instruction sets:'#010+ + 'Supported CPU instruction sets:'#010+ ' $INSTRUCTIONSETS'#010+ #010+ 'Supported FPU instruction sets:'#010+ @@ -1412,12 +1412,12 @@ const msgtxt : array[0..000361,1..240] of char=( ' $ASMMODES'#010+ #010+ 'Recognized compiler and RTL features:'#010+ - ' $FEATURELIST'#010+ + ' $FEATURE','LIST'#010+ #010+ 'Recognized modeswitches:'#010+ ' $MODESWITCHES'#010+ #010+ - 'S','upported ABI targets:'#010+ + 'Supported ABI targets:'#010+ ' $ABITARGETS'#010+ #010+ 'Supported Optimizations:'#010+ @@ -1428,352 +1428,351 @@ const msgtxt : array[0..000361,1..240] of char=( ' $WPOPTIMIZATIONS'#010+ #010+ 'Code Generation Backend'#010+ - ' $CODEGENERATIONBACKEND'#010+ + ' $CODEGENERATIONBACKE','ND'#010+ #010+ - 'Supported Microcontroller types:$\n $CONTROL','LERTYPES$\n'#010+ + 'Supported Microcontroller types:$\n $CONTROLLERTYPES$\n'#010+ 'This program comes under the GNU General Public Licence'#010+ 'For more information read COPYING.v2'#010+ #010+ 'Please report bugs in our bug tracker on:'#010+ - ' https://bugs.freepascal.org'#010+ - #010+ - 'More information may be found on our WWW pages',' (including directions'+ + ' https://bugs.freepascal.or','g'#010+ #010+ + 'More information may be found on our WWW pages (including directions'#010+ 'for mailing lists useful for asking questions or discussing potential'#010+ 'new features, etc.):'#010+ ' https://www.freepascal.org'#000+ - '11025_F*0*_Only options valid for the default or selected platform are'+ - ' listed.'#010+ - '**0','*_Put + after a boolean switch option to enable it, - to disable '+ - 'it.'#010+ + '11025_F*0*_Only options valid for',' the default or selected platform a'+ + 're listed.'#010+ + '**0*_Put + after a boolean switch option to enable it, - to disable it'+ + '.'#010+ '**1@_Read compiler options from in addition to the default fpc.'+ 'cfg'#010+ - '**1a_The compiler does not delete the generated assembler file'#010+ - '**2a5_Don'#039't generate Big Obj COFF ','files for GNU Binutils older t'+ - 'han 2.25 (Windows, NativeNT)'#010+ + '**1a_The compiler does not delete the generated ','assembler file'#010+ + '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older tha'+ + 'n 2.25 (Windows, NativeNT)'#010+ '**2al_List sourcecode lines in assembler file'#010+ '**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+ - '**2ao_Add an extra option to external assembler call (ignored for inte'+ - 'rnal',')'#010+ + '**2ao_Add an extra option',' to external assembler call (ignored for in'+ + 'ternal)'#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+ - '**1A_Output format:'#010+ - '**2Adefault_Use default assembler',#010+ + '**1A','_Output format:'#010+ + '**2Adefault_Use default assembler'#010+ '3*2Aas_Assemble using GNU AS'#010+ '3*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+ '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+ '8*2Anasm_Assemble using Nasm'#010+ - '8*2Anasmobj_Assemble using Nasm'#010+ + '8*2Anasmobj_Assembl','e using Nasm'#010+ '3*2Anasm_Assemble using Nasm'#010+ - '3*2Anas','mcoff_COFF (Go32v2) file using Nasm'#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*2Anasmdarwin_macho32 object file using Nasm (experimental)'#010+ - '3*2Awasm_','Obj file using Wasm (Watcom)'#010+ + '3*2Anasmdarwin_macho3','2 object file using Nasm (experimental)'#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_P','E-COFF (Win32) using internal writer'#010+ + '3*2Acoff','_COFF (Go32v2) using internal writer'#010+ + '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+ '3*2Ayasm_Assemble using Yasm (experimental)'#010+ '4*2Aas_Assemble using GNU AS'#010+ '4*2Agas_Assemble using GNU GAS'#010+ - '4*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+ - '4*2Amasm_Win64 object file using ml64 (Microsoft',')'#010+ + '4*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS',#010+ + '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+ '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+ '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+ '4*2Ayasm_Assemble using Yasm (experimental)'#010+ '4*2Anasm_Assemble using Nasm (experimental)'#010+ - '4*2Anasmwin64_Assemble Win64 object file using Nasm (','experimental)'#010+ + '4*2A','nasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+ '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+ #010+ '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+ 'ental)'#010+ - '6*2Aas_Unix o-file using GNU AS'#010+ + '6*2Aas_Unix o-file using GNU ','AS'#010+ '6*2Agas_GNU Motorola assembler'#010+ - '6*2Amit_MIT Syn','tax (old GAS)'#010+ + '6*2Amit_MIT Syntax (old GAS)'#010+ '6*2Amot_Standard Motorola assembler'#010+ '6*2Avasm_Use vasm to assemble'#010+ 'A*2Aas_Assemble using GNU AS'#010+ 'P*2Aas_Assemble using GNU AS'#010+ 'S*2Aas_Assemble using GNU AS'#010+ - 'Z*2Asdcc-sdasz80_Assemble using SDCC-SDASZ80'#010+ - 'Z*2Az80asm_Assemble using z8','0asm'#010+ + 'Z*2Asdcc-sdasz80_Assembl','e using SDCC-SDASZ80'#010+ + 'Z*2Az80asm_Assemble using z80asm'#010+ '**1b_Generate browser info'#010+ '**2bl_Generate local symbol info'#010+ '**1B_Build all modules'#010+ '**1C_Code generation options:'#010+ '**2C3_Turn on ieee error checking for constants'#010+ - '**2Ca_Select ABI; see fpc -i or fpc -ia for possible values'#010+ - '**2Cb_Ge','nerate code for a big-endian variant of the target architect'+ - 'ure'#010+ + '**2Ca_Select ABI; s','ee fpc -i or fpc -ia for possible values'#010+ + '**2Cb_Generate code for a big-endian variant of the target architectur'+ + 'e'#010+ '**2Cc_Set default calling convention to '#010+ '**2CD_Create also dynamic library (not supported)'#010+ - '**2Ce_Compilation with emulated floating point opcodes'#010+ - '**2CE_Generate FPU code ','which can raise exceptions'#010+ + '**2Ce_Compilation with emulate','d floating point opcodes'#010+ + '**2CE_Generate FPU code which can raise exceptions'#010+ '**2Cf_Select fpu instruction set to use; see fpc -i or fpc -if for '+ 'possible values'#010+ '**2CF_Minimal floating point constant precision (default, 32, 64)'#010+ - '**2Cg_Generate PIC code'#010+ - '**2Ch[,m]_ bytes min heap si','ze (between 1023 and 67107840) and'+ - ' optionally [m] max heap size'#010+ + '**2Cg_Gen','erate PIC code'#010+ + '**2Ch[,m]_ bytes min heap size (between 1023 and 67107840) and o'+ + 'ptionally [m] max heap size'#010+ '**2Ci_IO-checking'#010+ 'A*2CI_Select instruction set on ARM: ARM or THUMB'#010+ 'L*2Cl_LLVM code generation options'#010+ - 'L*3Clflto_Enable Link-time optimisation (needed both when compiling',' '+ + 'L*3Clflto_Enable L','ink-time optimisation (needed both when compiling '+ 'units and programs/libraries)'#010+ 'L*3Clfltonosystem_Disable LTO for the system unit (needed with at leas'+ 't Xcode 10.2 and earlier due to linker bugs)'#010+ - 'L*3Clv_LLVM target version: Xcode-10.1, 7.0, 8.0, .., 10.0'#010+ + 'L*3Clv_LLVM target version: Xcode-10.1, 7.','0, 8.0, .., 10.0'#010+ '**2Cn_Omit linking stage'#010+ - 'P*2CN_G','enerate nil-pointer checks (AIX-only)'#010+ + 'P*2CN_Generate nil-pointer checks (AIX-only)'#010+ '**2Co_Check overflow of integer operations'#010+ '**2CO_Check for possible overflow of integer operations'#010+ - '**2Cp_Select instruction set; see fpc -i or fpc -ic for possible va'+ - 'lues'#010+ - '**2CP=_ packing settin','gs'#010+ + '**2Cp_Select instruction set; see fpc -i or fpc -ic',' for possible '+ + 'values'#010+ + '**2CP=_ packing settings'#010+ '**3CPPACKSET=_ set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+ 'and 8'#010+ '**3CPPACKENUM=_ enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+ 'L'#010+ - '**3CPPACKRECORD=_ record packing: 0 or DEFAULT or NORMAL, 1, 2,'+ - ' 4, 8, 16 and 32'#010+ - '**','2Cr_Range checking'#010+ + '**3CPPACKRECORD=_ record packing:',' 0 or DEFAULT or NORMAL, 1, '+ + '2, 4, 8, 16 and 32'#010+ + '**2Cr_Range checking'#010+ '**2CR_Verify object method call validity'#010+ '**2Cs_Set stack checking size to '#010+ '**2Ct_Stack checking (for testing only, see manual)'#010+ - '8*2CT_Target-specific code generation options'#010+ - '3*2CT_Target-specific code generatio','n options'#010+ + '8*2CT_Target-specific code generatio','n options'#010+ + '3*2CT_Target-specific code generation options'#010+ '4*2CT_Target-specific code generation options'#010+ 'p*2CT_Target-specific code generation options'#010+ 'P*2CT_Target-specific code generation options'#010+ - 'J*2CT_Target-specific code generation options'#010+ - 'A*2CT_Target-specific code gene','ration options'#010+ + 'J*2CT_Target-specific code gene','ration options'#010+ + 'A*2CT_Target-specific code generation options'#010+ 'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ ' (AIX)'#010+ 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ ' (AIX)'#010+ - 'J*3CTautogetterprefix=X_ Automatically create getters for properties '+ - 'w','ith prefix X (empty string disables)'#010+ + 'J*3CTautogetterprefix=','X_ Automatically create getters for propertie'+ + 's with prefix X (empty string disables)'#010+ 'J*3CTautosetterprefix=X_ Automatically create setters for properties '+ 'with prefix X (empty string disables)'#010+ - '8*3CTcld_ Emit a CLD instruction before using the x86 '+ - 'string instructions'#010+ - '3*3CT','cld_ Emit a CLD instruction before using the x8'+ + '8*3CTcld_ Emit a CLD instructi','on before using the x8'+ '6 string instructions'#010+ + '3*3CTcld_ Emit a CLD instruction before using the x86 '+ + 'string instructions'#010+ '4*3CTcld_ Emit a CLD instruction before using the x86 '+ 'string instructions'#010+ - '8*3CTfarprocspushoddbp_ Increment BP before pushing it in t','he '+ + '8*3CTfarprocspus','hoddbp_ Increment BP before pushing it in the '+ 'prologue of far functions'#010+ 'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+ 'de for initializing integer array constants'#010+ - 'J*3CTenumfieldinit_ Initialize enumeration fields in constructor'+ - 's to enumtype(0), after cal','ling inherited constructors'#010+ + 'J*3CTenumfieldinit_ Initialize enumeration',' fields in construct'+ + 'ors to enumtype(0), after calling inherited constructors'#010+ 'J*3CTinitlocals_ Initialize local variables that trigger a JV'+ 'M bytecode verification error if used uninitialized (slows down code)'#010+ - 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/f'+ - 'un','ction/method names'#010+ + 'J*3CTlowercaseprocstart','_ Lowercase the first character of procedure'+ + '/function/method names'#010+ 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+ 'ble'#010+ 'J*2Cv_Var/out parameter copy-out checking'#010+ 'A*2CV_Set section threadvar model to '#010+ - '**2CX_Create also smartlinked library'#010+ - '**1d_Defines the sym','bol '#010+ + '**2CX_Create',' also smartlinked library'#010+ + '**1d_Defines the symbol '#010+ '**1D_Generate a DEF file'#010+ '**2DD_Set the date string returned by %DATE% to x, it is not checke'+ 'd for being a valid date string'#010+ '**2Dd_Set description to '#010+ - '**2DT_Set the time string returned by %TIME% to x, it is not checke'+ - 'd f','or being a valid time string'#010+ + '**2DT_Set the time st','ring returned by %TIME% to x, it is not chec'+ + 'ked for being a valid time string'#010+ '**2Dv_Set DLL version to '#010+ '*O2Dw_PM application'#010+ '**1e_Set path to executable'#010+ '**1E_Same as -Cn'#010+ '**1fPIC_Same as -Cg'#010+ '**1F_Set file names and paths:'#010+ - '**2Fa[,y]_(for a program) load units and [y] befo','re uses is p'+ + '**2Fa[,y]_(for a program) load units and [y] before uses is p'+ 'arsed'#010+ '**2Fc_Set input codepage to '#010+ '**2FC_Set RC compiler binary name to '#010+ '**2Fd_Disable the compiler'#039's internal directory cache'#010+ - '**2FD_Set the directory where to search for compiler utilities'#010+ - '**2Fe_Redirect error',' output to '#010+ + '**2FD_Set the directory where to sear','ch for compiler utilities'#010+ + '**2Fe_Redirect error output to '#010+ '**2FE_Set exe/unit output path to '#010+ '**2Ff_Add to framework path (Darwin only), or set IDF path to <'+ 'x> (Xtensa-FreeRTOS)'#010+ - '**2FF_Use fpcres as RC to RES compiler instead of windres or gorc'#010+ - '**2Fi_Add to include',' path'#010+ + '**2FF_Use fpcres as RC to RES compiler inste','ad of windres or gorc'#010+ + '**2Fi_Add to include path'#010+ '**2Fl_Add to library path'#010+ '**2FL_Use as dynamic linker'#010+ '**2Fm_Load unicode conversion table from .txt in the compiler di'+ 'r'#010+ - '**2FM_Set the directory where to search for unicode binary files'#010+ - '**2FN_Add to list o','f default unit scopes (namespaces)'#010+ + '**2FM_Set the directory where to search fo','r unicode binary files'#010+ + '**2FN_Add to list of default unit scopes (namespaces)'#010+ '**2Fo_Add to object path'#010+ '**2Fr_Load error message file '#010+ '**2FR_Set resource (.res) linker to '#010+ '**2Fu_Add to unit path'#010+ - '**2FU_Set unit output path to , overrides -FE'#010+ - '**2FW_St','ore generated whole-program optimization feedback in '#010+ + '**2FU_Set u','nit output path to , overrides -FE'#010+ + '**2FW_Store generated whole-program optimization feedback in '#010+ '**2Fw_Load previously stored whole-program optimization feedback fr'+ 'om '#010+ - '*g1g_Generate debug information (default format for target)'#010+ - '*g2gc_Generate checks for pointers (experiment','al, only available on '+ - 'some targets, might generate false positive)'#010+ + '*g1g_Generate debug information (default format for targe','t)'#010+ + '*g2gc_Generate checks for pointers (experimental, only available on so'+ + 'me targets, might generate false positive)'#010+ '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ '*g2gl_Use line info unit (show more info with backtraces)'#010+ - '*g2gm_Generate Microsoft CodeView debug information',' (experimental)'#010+ + '*g','2gm_Generate Microsoft CodeView debug information (experimental)'#010+ '*g2go_Set debug information options'#010+ '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+ 'aks gdb < 6.5)'#010+ - '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+ - #010+ - '*g3godwarfmethodclassprefix_ Prefix m','ethod names in DWARF with class'+ - ' name'#010+ + '*g3gostabsabsincludes_ Store absolute/full include file pat','hs in Sta'+ + 'bs'#010+ + '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+ + 'ame'#010+ '*g3godwarfcpp_ Simulate C++ debug information in DWARF'#010+ '*g3godwarfomflinnum_ Generate line number information in OMF LINNUM re'+ - 'cords in MS LINK format in addition to the DWARF debug information (Op'+ - 'en Watco','m Debugger/Linker compatibility)'#010+ + 'cords in MS LINK format in ad','dition to the DWARF debug information ('+ + 'Open Watcom Debugger/Linker compatibility)'#010+ '*g2gp_Preserve case in stabs symbol names'#010+ '*g2gs_Generate Stabs debug information'#010+ '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+ - 't'#039' changes the trashing value)'#010+ - '*g2gv_Generates programs t','raceable with Valgrind'#010+ + 't'#039' chang','es the trashing value)'#010+ + '*g2gv_Generates programs traceable with Valgrind'#010+ '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+ '*g2gw2_Generate DWARFv2 debug information'#010+ '*g2gw3_Generate DWARFv3 debug information'#010+ - '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+ + '*g2gw4_Generate DWARFv4 debu','g information (experimental)'#010+ '**1i_Information'#010+ - '**2','iD_Return compiler date'#010+ + '**2iD_Return compiler date'#010+ '**2iSO_Return compiler OS'#010+ '**2iSP_Return compiler host processor'#010+ '**2iTO_Return target OS'#010+ '**2iTP_Return target processor'#010+ '**2iV_Return short compiler version'#010+ - '**2iW_Return full compiler version'#010+ - '**2ia_Return list of suppo','rted ABI targets'#010+ + '**2iW_Return',' full compiler version'#010+ + '**2ia_Return list of supported ABI targets'#010+ '**2ib_Return the used code generation backend type'#010+ '**2ic_Return list of supported CPU instruction sets'#010+ '**2if_Return list of supported FPU instruction sets'#010+ - '**2ii_Return list of supported inline assembler modes'#010+ - '**2im_Return l','ist of supported modeswitches'#010+ + '**2ii_Return list o','f supported inline assembler modes'#010+ + '**2im_Return list of supported modeswitches'#010+ '**2io_Return list of supported optimizations'#010+ '**2ir_Return list of recognized compiler and RTL features'#010+ '**2it_Return list of supported targets'#010+ - '**2iu_Return list of supported microcontroller types'#010+ - '**2iw_Return li','st of supported whole program optimizations'#010+ + '**2iu_Return list o','f supported microcontroller types'#010+ + '**2iw_Return list of supported whole program optimizations'#010+ '**1I_Add to include path'#010+ '**1k_Pass to the linker'#010+ '**1l_Write logo'#010+ - '**1M_Set language mode to / enable modeswitch (see option -'+ - 'im)'#010+ + '**1M_Set language mode to / enable modeswitch (see option',' '+ + '-im)'#010+ '**2Mfpc_Free Pascal dialect (default)'#010+ - '**2Mo','bjfpc_FPC mode with Object Pascal support'#010+ + '**2Mobjfpc_FPC mode with Object Pascal support'#010+ '**2Mdelphi_Delphi 7 compatibility mode'#010+ '**2Mtp_TP/BP 7.0 compatibility mode'#010+ '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+ - '**2Miso_ISO 7185 mode'#010+ + '**2Miso_ISO 7185 m','ode'#010+ '**2Mextendedpascal_ISO 10206 mode'#010+ - '**2Mdelphiu','nicode_Delphi 2009 and later compatibility mode'#010+ + '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+ '**2*_Each mode (as listed above) enables its default set of modeswitch'+ 'es.'#010+ - '**2*_Other modeswitches are disabled and need to be enabled one by ano'+ - 'ther.'#010+ - '**1M-_Disable modeswitch (see optio','n -im)'#010+ + '**2*_Other modeswitches are disabled and need to be enabled one by an', + 'other.'#010+ + '**1M-_Disable modeswitch (see option -im)'#010+ '**1n_Do not read the default config files'#010+ '**1o_Change the name of the executable produced to '#010+ '**1O_Optimizations:'#010+ '**2O-_Disable optimizations'#010+ - '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+ - '**2O2_Level 2 optimizati','ons (-O1 + quick optimizations)'#010+ + '**2O1_Level 1 optimizations (quic','k and debugger friendly)'#010+ + '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+ '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+ '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+ 'pected side effects)'#010+ - '**2Oa=_Set alignment'#010+ - '**2Oo[NO]_Enable or disable opti','mizations; see fpc -i or fpc -io '+ - 'for possible values'#010+ + '**2Oa=_','Set alignment'#010+ + '**2Oo[NO]_Enable or disable optimizations; see fpc -i or fpc -io fo'+ + 'r possible values'#010+ '**2Op_Set target cpu for optimizing; see fpc -i or fpc -ic for poss'+ 'ible values'#010+ - '**2OW_Generate whole-program optimization feedback for optimization'+ - ' ; see fpc -i or fpc -iw for pos','sible values'#010+ + '**2OW_Generate whole-program optimization feedback fo','r optimizati'+ + 'on ; see fpc -i or fpc -iw for possible values'#010+ '**2Ow_Perform whole-program optimization ; see fpc -i or fpc -iw'+ ' for possible values'#010+ '**2Os_Optimize for size rather than speed'#010+ - '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+ - 'F*1P_Target CPU / compiler rela','ted options:'#010+ + '**1pg_Generate profile code for gprof (define','s FPC_PROFILE)'#010+ + 'F*1P_Target CPU / compiler related options:'#010+ 'F*2PB_Show default compiler binary'#010+ 'F*2PP_Show default target cpu'#010+ 'F*2P_Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipse'+ 'l,powerpc,powerpc64,sparc,x86_64)'#010+ - '**1R_Assembler reading style:'#010+ - '**2Rdefault_Use default a','ssembler for target'#010+ + '**1R_A','ssembler reading style:'#010+ + '**2Rdefault_Use default assembler for target'#010+ '3*2Ratt_Read AT&T style assembler'#010+ '3*2Rintel_Read Intel style assembler'#010+ '4*2Ratt_Read AT&T style assembler'#010+ '4*2Rintel_Read Intel style assembler'#010+ - '8*2Ratt_Read AT&T style assembler'#010+ + '8*2Ratt_Read AT&T style assem','bler'#010+ '8*2Rintel_Read Intel style assembler'#010+ - '6*2RMOT','_Read Motorola style assembler'#010+ + '6*2RMOT_Read Motorola style assembler'#010+ '**1S_Syntax options:'#010+ '**2S2_Same as -Mobjfpc'#010+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+ '**2Sa_Turn on assertions'#010+ '**2Sd_Same as -Mdelphi'#010+ - '**2Se_Error options. is a combination of the following:'#010+ - '**','3*_ : Compiler halts after the errors (default is 1)'#010+ + '**2Se_Error o','ptions. is a combination of the following:'#010+ + '**3*_ : Compiler halts after the errors (default is 1)'#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+ - '**2Sf_Enable certain features in compiler and RTL; see',' fpc -i or fpc'+ + '**2Sf','_Enable certain features in compiler and RTL; see fpc -i or fpc'+ ' -ir for possible values)'#010+ '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+ '**2Sh_Use reference counted strings (ansistring by default) instead of'+ ' shortstrings'#010+ - '**2Si_Turn on inlining of procedures/functions declared a','s "inline"'#010+ + '**2Si_Tu','rn on inlining of procedures/functions declared as "inline"'#010+ '**2Sj_Allows typed constants to be writeable (default in all modes)'#010+ '**2Sk_Load fpcylix unit'#010+ '**2SI_Set interface style to '#010+ '**3SIcom_COM compatible interface (default)'#010+ - '**3SIcorba_CORBA compatible interface'#010+ - '**2sT_Generate scri','pt only to link on target'#010+ + '**3SIcor','ba_CORBA compatible interface'#010+ + '**2sT_Generate script only to link on target'#010+ '**2Sm_Support macros like C (global)'#010+ '**2So_Same as -Mtp'#010+ '**2Sr_Transparent file names in ISO mode'#010+ '**2Ss_Constructor name must be init (destructor must be done)'#010+ - '**2Sv_Support vector processing (use CPU vector extensi','ons if availa'+ + '**2Sv_','Support vector processing (use CPU vector extensions if availa'+ 'ble)'#010+ '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+ '**2Sy_@ returns a typed pointer, same as $T+'#010+ '**1s_Do not call assembler and linker'#010+ - '**2sh_Generate script to link on host'#010+ - '**2st_Generate script to as','semble and link on target'#010+ + '**2sh_Generate s','cript to link on host'#010+ + '**2st_Generate script to assemble and link on target'#010+ '**2sr_Skip register allocation phase (use with -alr)'#010+ '**1T_Target operating system:'#010+ '3*2Tandroid_Android'#010+ '3*2Taros_AROS'#010+ '3*2Tbeos_BeOS'#010+ '3*2Tdarwin_Darwin/Mac OS X'#010+ - '3*2Tembedded_Embedded'#010+ - '3*2Temx_OS/2 via EMX (including',' EMX/RSX extender)'#010+ + '3*2T','embedded_Embedded'#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*2Thaiku_Haiku'#010+ '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tdar'+ 'win)'#010+ - '3*2Tlinux_Linux'#010+ + '3*2Tlinux_Lin','ux'#010+ '3*2Tnativent_Native NT API (experimental)'#010+ - '3*2T','netbsd_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*2Tsymbian_Symbian OS'#010+ '3*2Tsolaris_Solaris'#010+ - '3*2Twatcom_Watcom compatible DOS extender'#010+ - '3*2Twdosx_W','DOSX DOS extender'#010+ + '3*2T','watcom_Watcom compatible DOS extender'#010+ + '3*2Twdosx_WDOSX DOS extender'#010+ '3*2Twin32_Windows 32 Bit'#010+ '3*2Twince_Windows CE'#010+ '4*2Tandroid_Android'#010+ @@ -1781,9 +1780,9 @@ const msgtxt : array[0..000361,1..240] of char=( '4*2Tdarwin_Darwin/Mac OS X'#010+ '4*2Tdragonfly_DragonFly BSD'#010+ '4*2Tembedded_Embedded'#010+ - '4*2Tfreebsd_FreeBSD'#010+ + '4*2Tfreebsd_Free','BSD'#010+ '4*2Thaiku_Haiku'#010+ - '4*2Tiphonesim_iPhoneSimulator',#010+ + '4*2Tiphonesim_iPhoneSimulator'#010+ '4*2Tlinux_Linux'#010+ '4*2Tnetbsd_NetBSD'#010+ '4*2Topenbsd_OpenBSD'#010+ @@ -1792,9 +1791,9 @@ const msgtxt : array[0..000361,1..240] of char=( '6*2Tamiga_Commodore Amiga'#010+ '6*2Tatari_Atari ST/STe/TT'#010+ '6*2Tembedded_Embedded'#010+ - '6*2Tlinux_Linux'#010+ + '6','*2Tlinux_Linux'#010+ '6*2Tnetbsd_NetBSD'#010+ - '6*2Tmacosclassic','_Classic Mac OS'#010+ + '6*2Tmacosclassic_Classic Mac OS'#010+ '6*2Tpalmos_PalmOS'#010+ '6*2Tsinclairql_Sinclair QL'#010+ '8*2Tembedded_Embedded'#010+ @@ -1802,9 +1801,9 @@ const msgtxt : array[0..000361,1..240] of char=( '8*2Twin16_Windows 16 Bit'#010+ 'A*2Tandroid_Android'#010+ 'A*2Taros_AROS'#010+ - 'A*2Tembedded_Embedded'#010+ + 'A*2Tembedded_Em','bedded'#010+ 'A*2Tfreertos_FreeRTOS'#010+ - 'A*2Tgba_Game Boy Adv','ance'#010+ + 'A*2Tgba_Game Boy Advance'#010+ 'A*2Tios_iOS'#010+ 'A*2Tlinux_Linux'#010+ 'A*2Tnds_Nintendo DS'#010+ @@ -1815,9 +1814,9 @@ const msgtxt : array[0..000361,1..240] of char=( 'a*2Tandroid_Android'#010+ 'a*2Tdarwin_Darwin/Mac OS X'#010+ 'a*2Tios_iOS'#010+ - 'a*2Tlinux_Linux'#010+ + 'a*','2Tlinux_Linux'#010+ 'a*2Twin64_Windows 64'#010+ - 'J*2Tandroid_An','droid'#010+ + 'J*2Tandroid_Android'#010+ 'J*2Tjava_Java'#010+ 'm*2Tandroid_Android'#010+ 'm*2Tembedded_Embedded'#010+ @@ -1827,9 +1826,9 @@ const msgtxt : array[0..000361,1..240] of char=( 'P*2Taix_AIX'#010+ 'P*2Tamiga_AmigaOS'#010+ 'P*2Tdarwin_Darwin/Mac OS X'#010+ - 'P*2Tembedded_Embedded'#010+ + 'P*2Tembedded_Embed','ded'#010+ 'P*2Tlinux_Linux'#010+ - 'P*2Tmacosclassic_Classic Mac ','OS'#010+ + 'P*2Tmacosclassic_Classic Mac OS'#010+ 'P*2Tmorphos_MorphOS'#010+ 'P*2Tnetbsd_NetBSD'#010+ 'P*2Twii_Wii'#010+ @@ -1840,9 +1839,9 @@ const msgtxt : array[0..000361,1..240] of char=( 'R*2Tlinux_Linux'#010+ 'R*2Tembedded_Embedded'#010+ 'r*2Tlinux_Linux'#010+ - 'r*2Tembedded_Embedded'#010+ + 'r*2Temb','edded_Embedded'#010+ 'S*2Tlinux_Linux'#010+ - 'S*2Tsolaris_Solari','s'#010+ + 'S*2Tsolaris_Solaris'#010+ 's*2Tlinux_Linux'#010+ 'V*2Tembedded_Embedded'#010+ 'x*2Tembedded_Embedded'#010+ @@ -1851,157 +1850,156 @@ const msgtxt : array[0..000361,1..240] of char=( 'Z*2Tembedded_Embedded'#010+ 'Z*2Tzxspectrum_ZX Spectrum'#010+ 'Z*2Tmsxdos_MSX-DOS'#010+ - '**1u_Undefines the symbol '#010+ + '**1u_Undefines the s','ymbol '#010+ '**1U_Unit options:'#010+ - '**2Un_Do not check w','here the unit 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_Be verbose. is a combination of the following letters:'#010+ - '**2*_e : Show errors (default) ','0 : Show nothing (except errors'+ - ')'#010+ + '**1v_Be verbose. is a combination of the followi','ng letters:'#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*_s : Show time stamps q : Show message numbers'#010+ - '**2*_a : Show everything x : Show info about invoked tools'+ - #010+ - '**2*_b : ','Write file names messages p : Write tree.log with parse t'+ - 'ree'#010+ + '**2*_a : Show everything ',' x : Show info about invoked too'+ + 'ls'#010+ + '**2*_b : Write file names messages p : Write tree.log with parse tre'+ + 'e'#010+ '**2*_ with full path v : Write fpcdebug.txt with'#010+ - '**2*_z : Write output to stderr lots of debugging info'#010+ - '**2*_m, : Do not show messages numbered and '#010+ + '**2*_z : Write output to stderr lots of debugging info',#010+ + '**2*_m, : Do not show messages numbered and '#010+ 'F*1V_Append '#039'-'#039' to the used compiler binary name (e.g. f'+ 'or version)'#010+ '**1W_Target-specific options (targets)'#010+ '3*2WA_Specify native type application (Windows)'#010+ - '4*2WA_Specify native type application (Windows)'#010+ - 'A*2WA_Specify nati','ve type application (Windows)'#010+ + '4*2WA_Specify nat','ive type application (Windows)'#010+ + 'A*2WA_Specify native type application (Windows)'#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+ - 'a*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'A*','2Wb_Create a bundle instead of a library (Darwin)'#010+ + 'a*2Wb','_Create a bundle instead of a library (Darwin)'#010+ + 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+ '4*2Wb_Create a bundle instead of a library (Darwin)'#010+ '3*2WB_Create a relocatable image (Windows, Symbian)'#010+ - '3*2WB_Set image base to (Windows, Symbian)'#010+ - '4*2WB_Create a relocatable image (Wi','ndows)'#010+ + '3*2WB_Set image base to (Windo','ws, Symbian)'#010+ + '4*2WB_Create a relocatable image (Windows)'#010+ '4*2WB_Set image base to (Windows)'#010+ 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+ 'A*2WB_Set image base to (Windows, Symbian)'#010+ - 'Z*2WB_Set image base to (ZX Spectrum)'#010+ - '3*2WC_Specify console type application (EMX, ','OS/2, Windows)'#010+ + 'Z*2WB_Set image base to (ZX Spectr','um)'#010+ + '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ '4*2WC_Specify console type application (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+ - '4*2WD_Use',' DEFFILE to export functions of DLL or EXE (Windows)'#010+ + '3*2WD_Use DEFFILE to e','xport functions of DLL or EXE (Windows)'#010+ + '4*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*2We_Use external resources (Darwin)'#010+ - '4*2We_Use external resources (Darwin)'#010+ + '4*2We_Use external resources (Darwin)'#010, 'a*2We_Use external resources (Darwin)'#010+ - 'A*2We_Use e','xternal resources (Darwin)'#010+ + 'A*2We_Use external resources (Darwin)'#010+ 'P*2We_Use external resources (Darwin)'#010+ 'p*2We_Use external resources (Darwin)'#010+ '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+ - '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ - '4*2WG_Specify graphic ','type application (Windows)'#010+ + '3*2WG_Specify graphic type applic','ation (EMX, OS/2, Windows)'#010+ + '4*2WG_Specify graphic type application (Windows)'#010+ 'A*2WG_Specify graphic type application (Windows)'#010+ 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+ '3*2Wi_Use internal resources (Darwin)'#010+ - '4*2Wi_Use internal resources (Darwin)'#010+ - 'a*2Wi_Use internal resources (Da','rwin)'#010+ + '4*2Wi_Use internal re','sources (Darwin)'#010+ + 'a*2Wi_Use internal resources (Darwin)'#010+ 'A*2Wi_Use internal resources (Darwin)'#010+ 'P*2Wi_Use internal resources (Darwin)'#010+ 'p*2Wi_Use internal resources (Darwin)'#010+ '3*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '4*2WI_Turn on/off the usage of import sections (Windows)'#010+ - 'A*2WI_','Turn on/off the usage of import sections (Windows)'#010+ + '4*2WI_Turn on/','off the usage of import sections (Windows)'#010+ + 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+ '8*2Wh_Use huge code for units (ignored for models with CODE in a uniqu'+ 'e segment)'#010+ '8*2Wm_Set memory model'#010+ '8*3WmTiny_Tiny memory model'#010+ - '8*3WmSmall_Small memory model (default)'#010+ - '8*3WmMedium_Me','dium memory model'#010+ + '8*3Wm','Small_Small memory model (default)'#010+ + '8*3WmMedium_Medium memory model'#010+ '8*3WmCompact_Compact memory model'#010+ '8*3WmLarge_Large memory model'#010+ '8*3WmHuge_Huge memory model'#010+ '3*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - '4*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.','1, ... (Dar'+ + '4*2WM','_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Dar'+ 'win)'#010+ 'p*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ 'P*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - '4*2WN_Do',' not generate relocation code, needed for debugging (Windows'+ + '3*2WN_Do not generate relocat','ion code, needed for debugging (Windows'+ ')'#010+ + '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ - 'le values'#010+ - 'm*2Wp_Specify the control','ler type; see fpc -i or fpc -iu for poss'+ + 'A*2Wp_Specify the controller type; see fpc -i or fpc -iu',' for poss'+ 'ible values'#010+ + 'm*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ + 'le values'#010+ 'R*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ - 'V*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ - 'le values'#010+ - 'x*2Wp_Specify the control','ler type; see fpc -i or fpc -iu for poss'+ + 'V*2Wp_Specify the controller type; see fpc -i or fpc -iu',' for poss'+ 'ible values'#010+ + 'x*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ + 'le values'#010+ '3*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+ '4*2WP_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+ - 'a*2WP_Minimum iOS deployment version: 7.0, 7.1.','2, ... (Darwin)'#010+ + 'a','*2WP_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+ 'A*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+ '3*2WR_Generate relocation code (Windows)'#010+ '4*2WR_Generate relocation code (Windows)'#010+ - 'A*2WR_Generate relocation code (Windows)'#010+ - '8*2Wt_Set the target executable ','format'#010+ + 'A*2WR_Generate relocation c','ode (Windows)'#010+ + '8*2Wt_Set the target executable format'#010+ '8*3Wtexe_Create a DOS .EXE file (default)'#010+ '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+ 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+ - '6*2WQ_Set executable metadata format (Sinclair QL)'#010+ - '6*3WQqhdr_Set metad','ata to QDOS File Header style (default)'#010+ + '6*2WQ_Set executable ','metadata format (Sinclair QL)'#010+ + '6*3WQqhdr_Set metadata to QDOS File Header style (default)'#010+ '6*3WQxtcc_Set metadata to XTcc style'#010+ '**2WX_Enable executable stack (Linux)'#010+ '**1X_Executable options:'#010+ - '**2X9_Generate linkerscript for GNU Binutils ld older than version 2.1'+ - '9.1 (Linux)'#010+ - '**2Xa_Generate cod','e which allows to use more than 2 GB static data o'+ - 'n 64 Bit targets (Linux)'#010+ + '**2X9_Generate linkerscript for GNU Binutils ld old','er than version 2'+ + '.19.1 (Linux)'#010+ + '**2Xa_Generate code which allows to use more than 2 GB static data on '+ + '64 Bit targets (Linux)'#010+ '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+ 'ux)'#010+ - '**2Xd_Do not search default library path (sometimes required for cross'+ - '-compiling when not u','sing -XR)'#010+ + '**2Xd_Do not search default library path (','sometimes required for cro'+ + 'ss-compiling when not using -XR)'#010+ '**2Xe_Use external linker'#010+ '**2Xf_Substitute pthread library name for linking (BSD)'#010+ '**2Xg_Create debuginfo in a separate file and add a debuglink section '+ 'to executable'#010+ - '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAM','IC)'#010+ + '**2XD_Try to li','nk units dynamically (defines FPC_LINK_DYNAMIC)'#010+ '**2Xi_Use internal linker'#010+ 'L*2XlS_LLVM utilties suffix (e.g. -7 in case clang is called clang-'+ '7)'#010+ '**2XLA_Define library substitutions for linking'#010+ '**2XLO_Define order of library linking'#010+ - '**2XLD_Exclude default order of standard libraries',#010+ + '*','*2XLD_Exclude default order of standard libraries'#010+ '**2Xm_Generate link map'#010+ '**2XM_Set the name of the '#039'main'#039' program routine (default i'+ 's '#039'main'#039')'#010+ '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+ #010+ - 'F*2Xp_First search for the compiler binary in the directory '#010+ - '**2XP','_Prepend the binutils names with the prefix '#010+ + 'F*2Xp_First search f','or the compiler binary in the directory '#010+ + '**2XP_Prepend the binutils names with the prefix '#010+ '**2Xr_Set the linker'#039's rlink-path to (needed for cross comp'+ 'ile, see the ld manual for more information) (BeOS, Linux)'#010+ - '**2XR_Prepend to all linker search paths (BeOS, Darwin, F','reeB'+ + '**2XR_Prepen','d to all linker search paths (BeOS, Darwin, FreeB'+ 'SD, Linux, Mac OS, Solaris)'#010+ '**2Xs_Strip 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+ - '**2Xv_Generate table for Virtual En','try calls'#010+ + '**2Xt_Link with static libraries (-static is pass','ed to linker)'#010+ + '**2Xv_Generate table for Virtual Entry calls'#010+ '**2XV_Use VLink as external linker (default on Amiga, MorphOS)'#010+ '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+ '**1*_'#010+ '**1?_Show this help'#010+ - '**1h_Shows this help without waiting' + '**1h_Shows this help',' without waiting' ); diff --git a/compiler/pdecsub.pas b/compiler/pdecsub.pas index f86f43f55d..b7ce1fda75 100644 --- a/compiler/pdecsub.pas +++ b/compiler/pdecsub.pas @@ -1133,61 +1133,70 @@ implementation if assigned(genericparams) then begin - include(pd.defoptions,df_generic); - { push the parameter symtable so that constraint definitions are added - there and not in the owner symtable } - symtablestack.push(pd.parast); - { register the parameters } - for i:=0 to genericparams.count-1 do + if potype=potype_constructor then begin - tsym(genericparams[i]).register_sym; - if tsym(genericparams[i]).typ=typesym then - tstoreddef(ttypesym(genericparams[i]).typedef).register_def; - end; - insert_generic_parameter_types(pd,nil,genericparams); - { the list is no longer required } - genericparams.free; - genericparams:=nil; - symtablestack.pop(pd.parast); - parse_generic:=true; - { also generate a dummy symbol if none exists already } - if assigned(astruct) then - dummysym:=tsym(astruct.symtable.find(spnongen)) + Message(parser_e_constructurs_cannot_take_type_parameters); + genericparams.free; + genericparams:=nil; + end else begin - dummysym:=tsym(symtablestack.top.find(spnongen)); - if not assigned(dummysym) and - (symtablestack.top=current_module.localsymtable) and - assigned(current_module.globalsymtable) then - dummysym:=tsym(current_module.globalsymtable.find(spnongen)); - end; - if not assigned(dummysym) then - begin - { overloading generic routines with non-generic types is not - allowed, so we create a procsym as dummy } - dummysym:=cprocsym.create(orgspnongen); + include(pd.defoptions,df_generic); + { push the parameter symtable so that constraint definitions are added + there and not in the owner symtable } + symtablestack.push(pd.parast); + { register the parameters } + for i:=0 to genericparams.count-1 do + begin + tsym(genericparams[i]).register_sym; + if tsym(genericparams[i]).typ=typesym then + tstoreddef(ttypesym(genericparams[i]).typedef).register_def; + end; + insert_generic_parameter_types(pd,nil,genericparams); + { the list is no longer required } + genericparams.free; + genericparams:=nil; + symtablestack.pop(pd.parast); + parse_generic:=true; + { also generate a dummy symbol if none exists already } if assigned(astruct) then - astruct.symtable.insert(dummysym) + dummysym:=tsym(astruct.symtable.find(spnongen)) else - symtablestack.top.insert(dummysym); - end - else if (dummysym.typ<>procsym) and - ( - { show error only for the declaration, not also the implementation } - not assigned(astruct) or - (symtablestack.top.symtablelevel<>main_program_level) - ) then - Message1(sym_e_duplicate_id,dummysym.realname); - if not (sp_generic_dummy in dummysym.symoptions) then - begin - include(dummysym.symoptions,sp_generic_dummy); - add_generic_dummysym(dummysym); + begin + dummysym:=tsym(symtablestack.top.find(spnongen)); + if not assigned(dummysym) and + (symtablestack.top=current_module.localsymtable) and + assigned(current_module.globalsymtable) then + dummysym:=tsym(current_module.globalsymtable.find(spnongen)); + end; + if not assigned(dummysym) then + begin + { overloading generic routines with non-generic types is not + allowed, so we create a procsym as dummy } + dummysym:=cprocsym.create(orgspnongen); + if assigned(astruct) then + astruct.symtable.insert(dummysym) + else + symtablestack.top.insert(dummysym); + end + else if (dummysym.typ<>procsym) and + ( + { show error only for the declaration, not also the implementation } + not assigned(astruct) or + (symtablestack.top.symtablelevel<>main_program_level) + ) then + Message1(sym_e_duplicate_id,dummysym.realname); + if not (sp_generic_dummy in dummysym.symoptions) then + begin + include(dummysym.symoptions,sp_generic_dummy); + add_generic_dummysym(dummysym); + end; + if dummysym.typ=procsym then + tprocsym(dummysym).add_generic_overload(aprocsym); + { start token recorder for the declaration } + pd.init_genericdecl; + current_scanner.startrecordtokens(pd.genericdecltokenbuf); end; - if dummysym.typ=procsym then - tprocsym(dummysym).add_generic_overload(aprocsym); - { start token recorder for the declaration } - pd.init_genericdecl; - current_scanner.startrecordtokens(pd.genericdecltokenbuf); end else if assigned(genericdef) then insert_generic_parameter_types(pd,tstoreddef(genericdef),generictypelist); diff --git a/tests/webtbf/tw37217.pp b/tests/webtbf/tw37217.pp new file mode 100644 index 0000000000..b2969f3353 --- /dev/null +++ b/tests/webtbf/tw37217.pp @@ -0,0 +1,12 @@ +{ %fail } +{$mode delphi} +type + TEagle = class + constructor Create(); + end; + +constructor TEagle.Create(); +begin +end; +begin +end. From 964dc6f6f16b05d99659d781ba0b2407f5aaf39e Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 8 Jan 2021 16:33:05 +0000 Subject: [PATCH 05/19] * avoid div by zero in TView.CalcBounds.GrowI, resolves #30922 git-svn-id: trunk@48115 - --- packages/fv/src/views.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/fv/src/views.pas b/packages/fv/src/views.pas index cd85455f0c..7a44ccec42 100644 --- a/packages/fv/src/views.pas +++ b/packages/fv/src/views.pas @@ -1905,7 +1905,8 @@ VAR S, D: Sw_Integer; Min, Max: TPoint; PROCEDURE GrowI (Var I: Sw_Integer); BEGIN If (GrowMode AND gfGrowRel = 0) Then Inc(I, D) - Else I := (I * S + (S - D) SHR 1) DIV (S - D); { Calc grow value } + Else If S = D then I := 1 + Else I := (I * S + (S - D) SHR 1) DIV (S - D); { Calc grow value } END; BEGIN From 4e9b42344e5e19210d8ffec442f1bba631df9078 Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 8 Jan 2021 22:22:56 +0000 Subject: [PATCH 06/19] + AddLea2Lea optimization * improved LeaLea2Lea git-svn-id: trunk@48116 - --- compiler/i386/aoptcpu.pas | 2 ++ compiler/x86/aoptx86.pas | 43 ++++++++++++++++++++++++++++++++++++- compiler/x86_64/aoptcpu.pas | 2 ++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/compiler/i386/aoptcpu.pas b/compiler/i386/aoptcpu.pas index c6b667525e..fffa1a251d 100644 --- a/compiler/i386/aoptcpu.pas +++ b/compiler/i386/aoptcpu.pas @@ -137,6 +137,8 @@ unit aoptcpu; if InsContainsSegRef(taicpu(p)) then exit; case taicpu(p).opcode Of + A_ADD: + Result:=OptPass1ADD(p); A_AND: Result:=OptPass1And(p); A_IMUL: diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index 4b38629c44..16693d6c37 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -122,6 +122,7 @@ unit aoptx86; function PrePeepholeOptSxx(var p : tai) : boolean; function PrePeepholeOptIMUL(var p : tai) : boolean; + function OptPass1Add(var p: tai): boolean; function OptPass1AND(var p : tai) : boolean; function OptPass1_V_MOVAP(var p : tai) : boolean; function OptPass1VOP(var p : tai) : boolean; @@ -3171,6 +3172,42 @@ unit aoptx86; end; + function TX86AsmOptimizer.OptPass1Add(var p : tai) : boolean; + var + hp1 : tai; + begin + result:=false; + { replace + addX const,%reg1 + leaX (%reg1,%reg1,Y),%reg2 // Base or index might not be equal to reg1 + dealloc %reg1 + + by + + leaX const+const*Y(%reg1,%reg1,Y),%reg2 + } + if MatchOpType(taicpu(p),top_const,top_reg) and + GetNextInstruction(p,hp1) and + MatchInstruction(hp1,A_LEA,[taicpu(p).opsize]) and + ((taicpu(p).oper[1]^.reg=taicpu(hp1).oper[0]^.ref^.base) or + (taicpu(p).oper[1]^.reg=taicpu(hp1).oper[0]^.ref^.index)) then + begin + TransferUsedRegs(TmpUsedRegs); + UpdateUsedRegs(TmpUsedRegs, tai(p.next)); + if not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg,hp1,TmpUsedRegs)) then + begin + DebugMsg(SPeepholeOptimization + 'AddLea2Lea done',p); + if taicpu(p).oper[1]^.reg=taicpu(hp1).oper[0]^.ref^.base then + inc(taicpu(hp1).oper[0]^.ref^.offset,taicpu(p).oper[0]^.val); + if taicpu(p).oper[1]^.reg=taicpu(hp1).oper[0]^.ref^.index then + inc(taicpu(hp1).oper[0]^.ref^.offset,taicpu(p).oper[0]^.val*max(taicpu(hp1).oper[0]^.ref^.scalefactor,1)); + RemoveCurrentP(p); + result:=true; + end; + end; + end; + + function TX86AsmOptimizer.OptPass1LEA(var p : tai) : boolean; var hp1, hp2, hp3: tai; @@ -3350,7 +3387,11 @@ unit aoptx86; ) or ((taicpu(hp1).oper[0]^.ref^.base=taicpu(p).oper[1]^.reg) and (taicpu(hp1).oper[0]^.ref^.scalefactor <= 1) and - (taicpu(p).oper[0]^.ref^.base=NR_NO) and + ((taicpu(p).oper[0]^.ref^.base=NR_NO) or + ((taicpu(p).oper[0]^.ref^.base=taicpu(p).oper[0]^.ref^.base) and + (taicpu(p).oper[0]^.ref^.index=NR_NO) + ) + ) and not(RegUsedBetween(taicpu(p).oper[0]^.ref^.index,p,hp1))) ) and not(RegUsedBetween(taicpu(p).oper[0]^.ref^.base,p,hp1)) and diff --git a/compiler/x86_64/aoptcpu.pas b/compiler/x86_64/aoptcpu.pas index 5ac6583fd5..0829a8b9c4 100644 --- a/compiler/x86_64/aoptcpu.pas +++ b/compiler/x86_64/aoptcpu.pas @@ -71,6 +71,8 @@ uses ait_instruction: begin case taicpu(p).opcode of + A_ADD: + Result:=OptPass1ADD(p); A_AND: Result:=OptPass1AND(p); A_IMUL: From f42f62565bf31b15c943b91eab9fc5a9569e01fe Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 8 Jan 2021 22:29:24 +0000 Subject: [PATCH 07/19] * patch by J. Gareth Moreton to resolve bug introduced in the first patch, resolves #38294 git-svn-id: trunk@48117 - --- compiler/x86/aoptx86.pas | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index 16693d6c37..0c739c3237 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -4986,7 +4986,7 @@ unit aoptx86; MinSize, MaxSize, TrySmaller, TargetSize: TOpSize; TargetSubReg: TSubRegister; hp1, hp2: tai; - RegInUse, p_removed: Boolean; + RegInUse, RegChanged, p_removed: Boolean; { Store list of found instructions so we don't have to call GetNextInstructionUsingReg multiple times } @@ -5036,6 +5036,7 @@ unit aoptx86; TrySmallerLimit := UpperLimit; TrySmaller := S_NO; SmallerOverflow := False; + RegChanged := False; while GetNextInstructionUsingReg(hp1, hp1, ThisReg) and (hp1.typ = ait_instruction) and @@ -5418,6 +5419,7 @@ unit aoptx86; begin DebugMsg(SPeepholeOptimization + 'Simplified register usage so ' + debug_regname(taicpu(hp1).oper[1]^.reg) + ' = ' + debug_regname(taicpu(p).oper[1]^.reg), p); ThisReg := taicpu(hp1).oper[1]^.reg; + RegChanged := True; TransferUsedRegs(TmpUsedRegs); AllocRegBetween(ThisReg, p, hp1, TmpUsedRegs); @@ -5452,9 +5454,12 @@ unit aoptx86; { Now go through every instruction we found and change the size. If TargetSize = MaxSize, then almost no changes are needed and Result can remain False if it hasn't been set - yet. } + yet. - if (TargetSize <> MaxSize) and (InstrMax >= 0) then + If RegChanged is True, then the register requires changing + and so the point about TargetSize = MaxSize doesn't apply. } + + if ((TargetSize <> MaxSize) or RegChanged) and (InstrMax >= 0) then begin for Index := 0 to InstrMax do begin From 3b0df17bd1aef745b10b393855a3908a40725bf2 Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Sat, 9 Jan 2021 13:56:28 +0000 Subject: [PATCH 08/19] fcl-passrc: resolver: check library export function overload git-svn-id: trunk@48118 - --- packages/fcl-passrc/src/pasresolver.pp | 37 ++++++++++++++++++++++-- packages/fcl-passrc/tests/tcresolver.pas | 25 ++++++++++++---- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/packages/fcl-passrc/src/pasresolver.pp b/packages/fcl-passrc/src/pasresolver.pp index 9fe78b10ff..6a007df139 100644 --- a/packages/fcl-passrc/src/pasresolver.pp +++ b/packages/fcl-passrc/src/pasresolver.pp @@ -9049,7 +9049,7 @@ begin CurEl:=nil; if not SameText(RightStr(AttrName,length('Attribute')),'Attribute') then begin - // first search AttrName+'Attibute' + // first search AttrName+'Attribute' CurEl:=FindFirstEl(AttrName+'Attribute',Data,NameExpr); end; // then search the name @@ -9164,12 +9164,14 @@ var FindData: TPRFindData; Ref: TResolvedReference; ResolvedEl: TPasResolverResult; + Section: TPasSection; + Scope: TPasIdentifierScope; + ScopeIdent: TPasIdentifier; begin Expr:=El.NameExpr; if Expr<>nil then begin ResolveExpr(Expr,rraRead); - //ResolveGlobalSymbol(Expr); ComputeElement(Expr,ResolvedEl,[rcConstant]); DeclEl:=ResolvedEl.IdentEl; if DeclEl=nil then @@ -9189,6 +9191,18 @@ begin CheckFoundElement(FindData,Ref); end; + if DeclEl is TPasProcedure then + begin + Section:=DeclEl.Parent as TPasSection; + Scope:=Section.CustomData as TPasIdentifierScope; + ScopeIdent:=Scope.FindLocalIdentifier(DeclEl.Name); + if (ScopeIdent=nil) then + RaiseNotYetImplemented(20210106103001,El,GetObjPath(DeclEl)); + if ScopeIdent.NextSameIdentifier<>nil then + RaiseMsg(20210106103320,nCantDetermineWhichOverloadedFunctionToCall, + sCantDetermineWhichOverloadedFunctionToCall,[],El); + end; + // check index and name CheckConstExpr(El.ExportIndex,[revkInt,revkUInt],'integer'); CheckConstExpr(El.ExportName,[revkString,revkUnicodeString],'string'); @@ -21318,7 +21332,7 @@ procedure TPasResolver.CheckFoundElement( // Call this method after finding an element by searching the scopes. function IsFieldInheritingConst(aRef: TResolvedReference): boolean; - // returns true of aRef is a TPasVariable that inherits its const from parent. + // returns true if aRef is a TPasVariable that inherits its const from parent. // For example // type TRecord = record // a: word; // inherits const @@ -27564,6 +27578,21 @@ procedure TPasResolver.ComputeElement(El: TPasElement; out end; end; + procedure ComputeExportSymbol(ExpSymbol: TPasExportSymbol); + var + Ref: TResolvedReference; + begin + if ExpSymbol.CustomData is TResolvedReference then + begin + Ref:=TResolvedReference(El.CustomData); + ComputeElement(Ref.Declaration,ResolvedEl,Flags+[rcNoImplicitProc],StartEl); + end + else if ExpSymbol.NameExpr<>nil then + ComputeElement(ExpSymbol.NameExpr,ResolvedEl,Flags,StartEl) + else + RaiseNotYetImplemented(20210106225512,ExpSymbol); + end; + var DeclEl: TPasElement; ElClass: TClass; @@ -27946,6 +27975,8 @@ begin ComputeSpecializeType(TPasSpecializeType(El)) else if ElClass=TInlineSpecializeExpr then ComputeElement(TInlineSpecializeExpr(El).NameExpr,ResolvedEl,Flags,StartEl) + else if ElClass=TPasExportSymbol then + ComputeExportSymbol(TPasExportSymbol(El)) else RaiseNotYetImplemented(20160922163705,El); {$IF defined(nodejs) and defined(VerbosePasResolver)} diff --git a/packages/fcl-passrc/tests/tcresolver.pas b/packages/fcl-passrc/tests/tcresolver.pas index 587d86c3bf..c83c7027f1 100644 --- a/packages/fcl-passrc/tests/tcresolver.pas +++ b/packages/fcl-passrc/tests/tcresolver.pas @@ -986,8 +986,8 @@ type Procedure TestLibrary_ExportFunc_IndexStringFail; Procedure TestLibrary_ExportVar; // ToDo Procedure TestLibrary_Initialization_Finalization; - Procedure TestLibrary_ExportFuncOverloadFail; // ToDo - // ToDo Procedure TestLibrary_UnitExports; + Procedure TestLibrary_ExportFuncOverloadFail; + Procedure TestLibrary_UnitExports; end; function LinesToStr(Args: array of const): string; @@ -18836,8 +18836,6 @@ end; procedure TTestResolver.TestLibrary_ExportFuncOverloadFail; begin - exit; - StartLibrary(false); Add([ 'procedure Run(w: word); overload;', @@ -18850,7 +18848,24 @@ begin ' Run,', ' afile.run;', 'begin']); - CheckResolverException('The symbol cannot be exported from a library',123); + CheckResolverException(sCantDetermineWhichOverloadedFunctionToCall, + nCantDetermineWhichOverloadedFunctionToCall); +end; + +procedure TTestResolver.TestLibrary_UnitExports; +begin + StartUnit(false); + Add([ + 'interface' , + 'procedure Run;', + 'implementation', + 'procedure Run;', + 'begin', + 'end;', + 'exports', + ' Run;', + '']); + ParseUnit; end; initialization From c99a97cc556fae2e8be10331d80f4ea84c1164a7 Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Sat, 9 Jan 2021 13:57:13 +0000 Subject: [PATCH 09/19] pastojs: started library git-svn-id: trunk@48119 - --- packages/pastojs/src/fppas2js.pp | 238 +++++++++++++++++---------- packages/pastojs/tests/tcmodules.pas | 89 +++++++++- 2 files changed, 237 insertions(+), 90 deletions(-) diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 7d5d6756a7..fa6f7901b2 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -506,6 +506,7 @@ const nDuplicateMessageIdXAtY = 4029; nDispatchRequiresX = 4030; nConstRefNotForXAsConst = 4031; + nSymbolCannotBeExportedFromALibrary = 4032; // resourcestring patterns of messages resourcestring sPasElementNotSupported = 'Pascal element not supported: %s'; @@ -539,6 +540,7 @@ resourcestring sDuplicateMessageIdXAtY = 'Duplicate message id "%s" at %s'; sDispatchRequiresX = 'Dispatch requires %s'; sConstRefNotForXAsConst = 'ConstRef not yet implemented for %s. Treating as Const'; + sSymbolCannotBeExportedFromALibrary = 'The symbol cannot be exported from a library'; const ExtClassBracketAccessor = '[]'; // external name '[]' marks the array param getter/setter @@ -606,6 +608,7 @@ type pbifnValEnum, pbifnFreeLocalVar, pbifnFreeVar, + pbifnLibraryMain, pbifnOverflowCheckInt, pbifnProcType_Create, pbifnProcType_CreateSafe, @@ -671,6 +674,7 @@ type pbivnImplCode, pbivnMessageInt, pbivnMessageStr, + pbivnLibrary, // library pbivnLocalModuleRef, pbivnLocalProcRef, pbivnLocalTypeRef, @@ -682,6 +686,7 @@ type pbivnPtrClass, pbivnPtrRecord, pbivnProcOk, + pbivnProgram, // program pbivnResourceStrings, pbivnResourceStringOrig, pbivnRTL, @@ -791,6 +796,7 @@ const 'valEnum', // pbifnValEnum rtl.valEnum 'freeLoc', // pbifnFreeLocalVar rtl.freeLoc 'free', // pbifnFreeVar rtl.free + '$main', // pbifnLibraryMain 'oc', // pbifnOverflowCheckInt rtl.oc 'createCallback', // pbifnProcType_Create rtl.createCallback 'createSafeCallback', // pbifnProcType_CreateSafe rtl.createSafeCallback @@ -855,6 +861,7 @@ const '$implcode', // pbivnImplCode '$msgint', // pbivnMessageInt '$msgstr', // pbivnMessageStr + 'library', // pbivnLibrary pas.library '$lm', // pbivnLocalModuleRef '$lp', // pbivnLocalProcRef '$lt', // pbivnLocalTypeRef @@ -866,6 +873,7 @@ const '$class', // pbivnPtrClass, ClassType '$record', // pbivnPtrRecord, hidden recordtype '$ok', // pbivnProcOk + 'program', // pbivnProgram pas.program '$resourcestrings', // pbivnResourceStrings 'org', // pbivnResourceStringOrig 'rtl', // pbivnRTL @@ -1538,6 +1546,7 @@ type Params: TParamsExpr); override; procedure FinishPropertyParamAccess(Params: TParamsExpr; Prop: TPasProperty ); override; + procedure FinishExportSymbol(El: TPasExportSymbol); override; procedure FindCreatorArrayOfConst(Args: TFPList; ErrorEl: TPasElement); function FindProc_ArrLitToArrayOfConst(ErrorEl: TPasElement): TPasFunction; virtual; function FindSystemExternalClassType(const aClassName, JSName: string; @@ -2071,7 +2080,7 @@ type Procedure CreateInitSection(El: TPasModule; Src: TJSSourceElements; AContext: TConvertContext); virtual; Procedure AddHeaderStatement(JS: TJSElement; PosEl: TPasElement; aContext: TConvertContext); virtual; Procedure AddImplHeaderStatement(JS: TJSElement; PosEl: TPasElement; aContext: TConvertContext); virtual; - Procedure AddDelayedInits(El: TPasProgram; Src: TJSSourceElements; AContext: TConvertContext); virtual; + Procedure AddDelayedInits(El: TPasModule; Src: TJSSourceElements; AContext: TConvertContext); virtual; Procedure AddDelaySpecializeInit(El: TPasGenericType; Src: TJSSourceElements; AContext: TConvertContext); virtual; // enum and sets Function CreateReferencedSet(El: TPasElement; SetExpr: TJSElement): TJSElement; virtual; @@ -4880,6 +4889,41 @@ begin FindCreatorArrayOfConst(Args,Params); end; +procedure TPas2JSResolver.FinishExportSymbol(El: TPasExportSymbol); +var + ResolvedEl: TPasResolverResult; + DeclEl: TPasElement; + Proc: TPasProcedure; +begin + if El.Parent is TLibrarySection then + // ok + else + // everywhere else: not supported + RaiseMsg(20210106224720,nNotSupportedX,sNotSupportedX,['non library export'],El.ExportIndex); + if El.ExportIndex<>nil then + RaiseMsg(20210106223403,nNotSupportedX,sNotSupportedX,['export index'],El.ExportIndex); + + inherited FinishExportSymbol(El); + + ComputeElement(El,ResolvedEl,[]); + DeclEl:=ResolvedEl.IdentEl; + if DeclEl=nil then + RaiseMsg(20210106223620,nSymbolCannotBeExportedFromALibrary, + sSymbolCannotBeExportedFromALibrary,[],El) + else if DeclEl is TPasProcedure then + begin + Proc:=TPasProcedure(DeclEl); + if Proc.Parent is TPasSection then + // ok + else + RaiseMsg(20210106224436,nSymbolCannotBeExportedFromALibrary, + sSymbolCannotBeExportedFromALibrary,[],El); + end + else + RaiseMsg(20210106223621,nSymbolCannotBeExportedFromALibrary, + sSymbolCannotBeExportedFromALibrary,[],El); +end; + procedure TPas2JSResolver.FindCreatorArrayOfConst(Args: TFPList; ErrorEl: TPasElement); var @@ -8083,6 +8127,18 @@ Program: }; }); +Library: + rtl.module('library', + [,, ...], + function(){ + var $mod = this; + + this.$main=function(){ + + }; + }); + export1 = pas.unit1.func1; + Unit without implementation: rtl.module('', [,, ...], @@ -8136,6 +8192,7 @@ begin ModScope:=nil; OuterSrc:=TJSSourceElements(CreateElement(TJSSourceElements, El)); Result:=OuterSrc; + IntfContext:=nil; ok:=false; try // create 'rtl.module(...)' @@ -8145,7 +8202,7 @@ begin ArgArray := RegModuleCall.Args; RegModuleCall.Args:=ArgArray; - // add unitname parameter: unitname + // add module name parameter ModuleName:=TransformModuleName(El,false,AContext); ArgArray.Elements.AddElement.Expr:=CreateLiteralString(El,ModuleName); @@ -8183,95 +8240,88 @@ begin IntfContext:=TInterfaceSectionContext.Create(El,Src,AContext) else IntfContext:=TSectionContext.Create(El,Src,AContext); - try - // add "var $mod = this;" - IntfContext.ThisVar.Element:=El; - IntfContext.ThisVar.Kind:=cvkGlobal; - if El.CustomData is TPasModuleScope then - IntfContext.ScannerBoolSwitches:=TPasModuleScope(El.CustomData).BoolSwitches; - ModVarName:=GetBIName(pbivnModule); - IntfContext.AddLocalVar(ModVarName,El,cvkGlobal,false); - AddToSourceElements(Src,CreateVarStatement(ModVarName, - CreatePrimitiveDotExpr('this',El),El)); + // add "var $mod = this;" + IntfContext.ThisVar.Element:=El; + IntfContext.ThisVar.Kind:=cvkGlobal; + if El.CustomData is TPasModuleScope then + IntfContext.ScannerBoolSwitches:=TPasModuleScope(El.CustomData).BoolSwitches; + ModVarName:=GetBIName(pbivnModule); + IntfContext.AddLocalVar(ModVarName,El,cvkGlobal,false); + AddToSourceElements(Src,CreateVarStatement(ModVarName, + CreatePrimitiveDotExpr('this',El),El)); - if (ModScope<>nil) then - RestoreImplJSLocals(ModScope,IntfContext); + if (ModScope<>nil) then + RestoreImplJSLocals(ModScope,IntfContext); - if (El is TPasProgram) then - begin // program - Prg:=TPasProgram(El); - if Assigned(Prg.ProgramSection) then - AddToSourceElements(Src,ConvertDeclarations(Prg.ProgramSection,IntfContext)); - AddDelayedInits(Prg,Src,IntfContext); - CreateInitSection(Prg,Src,IntfContext); - end - else if El is TPasLibrary then - begin // library - Lib:=TPasLibrary(El); - if Assigned(Lib.LibrarySection) then - AddToSourceElements(Src,ConvertDeclarations(Lib.LibrarySection,IntfContext)); - // ToDo AddDelayedInits(Lib,Src,IntfContext); - CreateInitSection(Lib,Src,IntfContext); + if (El is TPasProgram) then + begin // program + Prg:=TPasProgram(El); + if Assigned(Prg.ProgramSection) then + AddToSourceElements(Src,ConvertDeclarations(Prg.ProgramSection,IntfContext)); + AddDelayedInits(Prg,Src,IntfContext); + CreateInitSection(Prg,Src,IntfContext); + end + else if El is TPasLibrary then + begin // library + Lib:=TPasLibrary(El); + if Assigned(Lib.LibrarySection) then + AddToSourceElements(Src,ConvertDeclarations(Lib.LibrarySection,IntfContext)); + AddDelayedInits(Lib,Src,IntfContext); + CreateInitSection(Lib,Src,IntfContext); + // ToDo: append exports + end + else + begin // unit + IntfSecCtx:=TInterfaceSectionContext(IntfContext); + if Assigned(El.ImplementationSection) then + begin + // add var $impl = $mod.$impl + ImplVarSt:=CreateVarStatement(GetBIName(pbivnImplementation), + CreateMemberExpression([ModVarName,GetBIName(pbivnImplementation)]),El); + AddToSourceElements(Src,ImplVarSt); + // register local var $impl + IntfSecCtx.AddLocalVar(GetBIName(pbivnImplementation),El.ImplementationSection,cvkGlobal,false); + end; + if Assigned(El.InterfaceSection) then + AddToSourceElements(Src,ConvertDeclarations(El.InterfaceSection,IntfSecCtx)); + + ImplFunc:=CreateImplementationSection(El,IntfSecCtx); + // add $mod.$implcode = ImplFunc; + AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El)); + AssignSt.LHS:=CreateMemberExpression([ModVarName,GetBIName(pbivnImplCode)]); + AssignSt.Expr:=ImplFunc; + AddToSourceElements(Src,AssignSt); + + // append initialization section + CreateInitSection(El,Src,IntfSecCtx); + + if TJSSourceElements(ImplFunc.AFunction.Body.A).Statements.Count=0 then + begin + // empty implementation + + // remove unneeded $impl from interface + RemoveFromSourceElements(Src,ImplVarSt); + // remove unneeded $mod.$implcode = function(){} + RemoveFromSourceElements(Src,AssignSt); + HasImplUsesClause:=(El.ImplementationSection<>nil) + and (length(El.ImplementationSection.UsesClause)>0); end else - begin // unit - IntfSecCtx:=TInterfaceSectionContext(IntfContext); - if Assigned(El.ImplementationSection) then - begin - // add var $impl = $mod.$impl - ImplVarSt:=CreateVarStatement(GetBIName(pbivnImplementation), - CreateMemberExpression([ModVarName,GetBIName(pbivnImplementation)]),El); - AddToSourceElements(Src,ImplVarSt); - // register local var $impl - IntfSecCtx.AddLocalVar(GetBIName(pbivnImplementation),El.ImplementationSection,cvkGlobal,false); - end; - if Assigned(El.InterfaceSection) then - AddToSourceElements(Src,ConvertDeclarations(El.InterfaceSection,IntfSecCtx)); - - ImplFunc:=CreateImplementationSection(El,IntfSecCtx); - // add $mod.$implcode = ImplFunc; - AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El)); - AssignSt.LHS:=CreateMemberExpression([ModVarName,GetBIName(pbivnImplCode)]); - AssignSt.Expr:=ImplFunc; - AddToSourceElements(Src,AssignSt); - - // append initialization section - CreateInitSection(El,Src,IntfSecCtx); - - if TJSSourceElements(ImplFunc.AFunction.Body.A).Statements.Count=0 then - begin - // empty implementation - - // remove unneeded $impl from interface - RemoveFromSourceElements(Src,ImplVarSt); - // remove unneeded $mod.$implcode = function(){} - RemoveFromSourceElements(Src,AssignSt); - HasImplUsesClause:=(El.ImplementationSection<>nil) - and (length(El.ImplementationSection.UsesClause)>0); - end - else - begin - HasImplUsesClause:=true; - end; - - if HasImplUsesClause then - // add implementation uses list: [,, ...] - ArgArray.AddElement(CreateUsesList(El.ImplementationSection,AContext)); - + begin + HasImplUsesClause:=true; end; - if (ModScope<>nil) and (coStoreImplJS in Options) then - StoreImplJSLocals(ModScope,IntfContext); - finally - IntfContext.Free; - end; + if HasImplUsesClause then + // add implementation uses list: [,, ...] + ArgArray.AddElement(CreateUsesList(El.ImplementationSection,AContext)); - // add implementation function - if ImplVarSt<>nil then - begin - end; + end; // end unit + + if (ModScope<>nil) and (coStoreImplJS in Options) then + StoreImplJSLocals(ModScope,IntfContext); ok:=true; finally + IntfContext.Free; if not ok then FreeAndNil(Result); end; @@ -15397,6 +15447,8 @@ begin end else if C=TPasAttributes then continue + else if C=TPasExportSymbol then + continue else RaiseNotSupported(P as TPasElement,AContext,20161024191434); Add(E,P); @@ -17148,11 +17200,21 @@ begin Scope:=nil; end; - IsMain:=(El is TPasProgram); - if IsMain then + if El.ClassType=TPasProgram then + begin + IsMain:=true; FunName:=GetBIName(pbifnProgramMain) + end + else if El.ClassType=TPasLibrary then + begin + IsMain:=true; + FunName:=GetBIName(pbifnLibraryMain) + end else + begin + IsMain:=false; FunName:=GetBIName(pbifnUnitInit); + end; NeedRTLCheckVersion:=IsMain and (coRTLVersionCheckMain in Options); RootContext:=AContext.GetRootContext as TRootContext; @@ -17680,7 +17742,7 @@ begin IntfSec.AddImplHeaderStatement(JS); end; -procedure TPasToJSConverter.AddDelayedInits(El: TPasProgram; +procedure TPasToJSConverter.AddDelayedInits(El: TPasModule; Src: TJSSourceElements; AContext: TConvertContext); var aResolver: TPas2JSResolver; @@ -26617,8 +26679,10 @@ begin if Result<>'' then exit; end; - if El is TPasProgram then - Result:='program' + if El.ClassType=TPasProgram then + Result:=GetBIName(pbivnProgram) + else if El.ClassType=TPasLibrary then + Result:=GetBIName(pbivnLibrary) else begin Result:=''; diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 1ab920c33a..84165e2168 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -125,6 +125,7 @@ type FModules: TObjectList;// list of TTestEnginePasResolver FParser: TTestPasParser; FPasProgram: TPasProgram; + FPasLibrary: TPasLibrary; FHintMsgs: TObjectList; // list of TTestHintMessage FHintMsgsGood: TFPList; // list of TTestHintMessage marked as expected FJSRegModuleCall: TJSCallExpression; @@ -157,6 +158,7 @@ type procedure ParseModuleQueue; virtual; procedure ParseModule; virtual; procedure ParseProgram; virtual; + procedure ParseLibrary; virtual; procedure ParseUnit; virtual; protected function FindModuleWithFilename(aFilename: string): TTestEnginePasResolver; virtual; @@ -166,9 +168,11 @@ type ImplementationSrc: string): TTestEnginePasResolver; virtual; procedure AddSystemUnit(Parts: TSystemUnitParts = []); virtual; procedure StartProgram(NeedSystemUnit: boolean; SystemUnitParts: TSystemUnitParts = []); virtual; + procedure StartLibrary(NeedSystemUnit: boolean; SystemUnitParts: TSystemUnitParts = []); virtual; procedure StartUnit(NeedSystemUnit: boolean; SystemUnitParts: TSystemUnitParts = []); virtual; procedure ConvertModule; virtual; procedure ConvertProgram; virtual; + procedure ConvertLibrary; virtual; procedure ConvertUnit; virtual; function ConvertJSModuleToString(El: TJSElement): string; virtual; procedure CheckDottedIdentifier(Msg: string; El: TJSElement; DottedName: string); @@ -196,6 +200,7 @@ type function GetResolver(const Filename: string): TTestEnginePasResolver; function GetDefaultNamespace: string; property PasProgram: TPasProgram Read FPasProgram; + property PasLibrary: TPasLibrary Read FPasLibrary; property Resolvers[Index: integer]: TTestEnginePasResolver read GetResolvers; property ResolverCount: integer read GetResolverCount; property Engine: TTestEnginePasResolver read FEngine; @@ -894,6 +899,12 @@ type Procedure TestAsync_Inherited; Procedure TestAsync_ClassInterface; Procedure TestAsync_ClassInterface_AsyncMissmatchFail; + + // Library + Procedure TestLibrary_Empty; + Procedure TestLibrary_ExportFunc; // ToDo + // ToDo: test delayed specialization init + // ToDO: analyzer end; function LinesToStr(Args: array of const): string; @@ -1587,6 +1598,22 @@ begin FFirstPasStatement:=TPasImplBlock(PasProgram.InitializationSection.Elements[0]); end; +procedure TCustomTestModule.ParseLibrary; +var + Init: TInitializationSection; +begin + if SkipTests then exit; + ParseModule; + if SkipTests then exit; + AssertEquals('Has library',TPasLibrary,Module.ClassType); + FPasLibrary:=TPasLibrary(Module); + AssertNotNull('Has library section',PasLibrary.LibrarySection); + Init:=PasLibrary.InitializationSection; + if (Init<>nil) and (Init.Elements.Count>0) then + if TObject(Init.Elements[0]) is TPasImplBlock then + FFirstPasStatement:=TPasImplBlock(PasLibrary.InitializationSection.Elements[0]); +end; + procedure TCustomTestModule.ParseUnit; begin if SkipTests then exit; @@ -1869,6 +1896,17 @@ begin Add(''); end; +procedure TCustomTestModule.StartLibrary(NeedSystemUnit: boolean; + SystemUnitParts: TSystemUnitParts); +begin + if NeedSystemUnit then + AddSystemUnit(SystemUnitParts) + else + Parser.ImplicitUses.Clear; + Add('library '+ExtractFileUnitName(Filename)+';'); + Add(''); +end; + procedure TCustomTestModule.StartUnit(NeedSystemUnit: boolean; SystemUnitParts: TSystemUnitParts); begin @@ -1974,6 +2012,8 @@ begin AssertEquals('module name param is string',ord(jstString),ord(ModuleNameExpr.Value.ValueType)); if Module is TPasProgram then AssertEquals('module name','program',String(ModuleNameExpr.Value.AsString)) + else if Module is TPasLibrary then + AssertEquals('module name','library',String(ModuleNameExpr.Value.AsString)) else AssertEquals('module name',Module.Name,String(ModuleNameExpr.Value.AsString)); @@ -1990,7 +2030,7 @@ begin CheckFunctionParam('module intf-function',Arg,FJSModuleSrc); // search for $mod.$init or $mod.$main - the last statement - if Module is TPasProgram then + if (Module is TPasProgram) or (Module is TPasLibrary) then begin InitName:='$main'; AssertEquals('$mod.'+InitName+' function 1',true,JSModuleSrc.Statements.Count>0); @@ -2009,7 +2049,7 @@ begin InitFunction:=InitAssign.Expr as TJSFunctionDeclarationStatement; FJSInitBody:=InitFunction.AFunction.Body as TJSFunctionBody; end - else if Module is TPasProgram then + else if (Module is TPasProgram) or (Module is TPasLibrary) then CheckDottedIdentifier('init function',InitAssign.LHS,'$mod.'+InitName); end; end; @@ -2028,6 +2068,13 @@ begin ConvertModule; end; +procedure TCustomTestModule.ConvertLibrary; +begin + Add('end.'); + ParseLibrary; + ConvertModule; +end; + procedure TCustomTestModule.ConvertUnit; begin Add('end.'); @@ -2089,7 +2136,7 @@ begin // program main or unit initialization if (Module is TPasProgram) or (Trim(InitStatements)<>'') then begin - if Module is TPasProgram then + if (Module is TPasProgram) or (Module is TPasLibrary) then InitName:='$main' else InitName:='$init'; @@ -33110,6 +33157,42 @@ begin ConvertProgram; end; +procedure TTestModule.TestLibrary_Empty; +begin + StartLibrary(false); + Add([ + '']); + ConvertLibrary; + CheckSource('TestLibrary_Empty', + LinesToStr([ // statements + '']), + LinesToStr([ + ''])); + CheckResolverUnexpectedHints(); +end; + +procedure TTestModule.TestLibrary_ExportFunc; +begin + exit; + + StartLibrary(false); + Add([ + 'procedure Run(w: word);', + 'begin', + 'end;', + 'exports', + ' Run,', + ' run name ''Foo'';', + '']); + ConvertLibrary; + CheckSource('TestLibrary_ExportFunc', + LinesToStr([ // statements + '']), + LinesToStr([ + ''])); + CheckResolverUnexpectedHints(); +end; + Initialization RegisterTests([TTestModule]); end. From 359bb64aedafca34fee136e053b69a897b9c428a Mon Sep 17 00:00:00 2001 From: svenbarth Date: Sat, 9 Jan 2021 15:58:13 +0000 Subject: [PATCH 10/19] * if the Linux target is compiled with FPC_USE_LIBC the initialization of TLS is not required (according to one comment by Florian), so disable all related code in that case (as for example the syscall numbers are not available then) git-svn-id: trunk@48120 - --- rtl/linux/i386/si_prc.inc | 6 ++++-- rtl/linux/si_impl.inc | 2 ++ rtl/linux/system.pp | 10 ++++++++++ rtl/linux/x86_64/si_prc.inc | 10 ++++++++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/rtl/linux/i386/si_prc.inc b/rtl/linux/i386/si_prc.inc index ae0531dd9e..1639445a70 100644 --- a/rtl/linux/i386/si_prc.inc +++ b/rtl/linux/i386/si_prc.inc @@ -45,7 +45,9 @@ var procedure fpc_geteipasebxlocal; [external name 'fpc_geteipasebx']; {$endif} +{$ifndef FPC_USE_LIBC} procedure InitTLS; [external name 'FPC_INITTLS']; +{$endif} procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; asm @@ -95,9 +97,9 @@ asm movl %esp,initialstkptr {$endif FPC_PIC} -{$if FPC_FULLVERSION>30200} +{$if (FPC_FULLVERSION>30200) and not defined(FPC_USE_LIBC)} call InitTLS -{$endif FPC_FULLVERSION>30200} +{$endif FPC_FULLVERSION>30200 and not FPC_USE_LIBC} xorl %ebp,%ebp call PASCALMAIN diff --git a/rtl/linux/si_impl.inc b/rtl/linux/si_impl.inc index a727310551..2b19deaf10 100644 --- a/rtl/linux/si_impl.inc +++ b/rtl/linux/si_impl.inc @@ -16,7 +16,9 @@ procedure PascalMain; external name 'PASCALMAIN'; {$ifdef FPC_HAS_INDIRECT_ENTRY_INFORMATION} procedure SysEntry(constref info: TEntryInformation); external name 'FPC_SysEntry'; +{$ifndef FPC_USE_LIBC} procedure SysEntry_InitTLS(constref info: TEntryInformation); external name 'FPC_SysEntry_InitTLS'; +{$endif FPC_USE_LIBC} var InitFinalTable : record end; external name 'INITFINAL'; diff --git a/rtl/linux/system.pp b/rtl/linux/system.pp index caa4e116c7..4303c61147 100644 --- a/rtl/linux/system.pp +++ b/rtl/linux/system.pp @@ -125,6 +125,9 @@ procedure OsSetupEntryInformation(constref info: TEntryInformation); forward; TLS handling *****************************************************************************} +{ TLS initialization is not required if linking against libc } +{$if not defined(FPC_USE_LIBC)} + {$if defined(CPUARM)} {$define INITTLS} Function fpset_tls(p : pointer;size : SizeUInt):cint; @@ -185,6 +188,8 @@ begin end; {$endif defined(CPUX86_64)} +{$endif not FPC_USE_LIBC} + {$ifdef INITTLS} { This code initialized the TLS segment for single threaded and static programs. @@ -323,6 +328,8 @@ begin info.PascalMain(); end; + +{$ifndef FPC_USE_LIBC} procedure SysEntry_InitTLS(constref info: TEntryInformation);[public,alias:'FPC_SysEntry_InitTLS']; begin SetupEntryInformation(info); @@ -334,6 +341,7 @@ begin {$endif cpui386} info.PascalMain(); end; +{$endif FPC_USE_LIBC} {$else} var @@ -361,6 +369,7 @@ begin end; +{$ifdef FPC_USE_LIBC} procedure SysEntry_InitTLS(constref info: TEntryInformation);[public,alias:'FPC_SysEntry_InitTLS']; begin initialstkptr := info.OS.stkptr; @@ -375,6 +384,7 @@ begin {$endif cpui386} info.PascalMain(); end; +{$endif FPC_USE_LIBC} {$endif FPC_BOOTSTRAP_INDIRECT_ENTRY} diff --git a/rtl/linux/x86_64/si_prc.inc b/rtl/linux/x86_64/si_prc.inc index 1864e9d559..71804c1343 100644 --- a/rtl/linux/x86_64/si_prc.inc +++ b/rtl/linux/x86_64/si_prc.inc @@ -35,7 +35,9 @@ {$L abitag.o} +{$ifndef FPC_USE_LIBC} procedure InitTLS; [external name 'FPC_INITTLS']; +{$endif} {****************************************************************************** Process start/halt @@ -73,7 +75,11 @@ procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; movq %r10,%rdi xorq %rbp, %rbp +{$ifdef FPC_USE_LIBC} + call SysEntry +{$else} call SysEntry_InitTLS +{$endif} {$else FPC_HAS_INDIRECT_ENTRY_INFORMATION} popq %rsi { Pop the argument count. } movq operatingsystem_parameter_argc@GOTPCREL(%rip),%rax @@ -90,9 +96,9 @@ procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; movq initialstkptr@GOTPCREL(%rip),%rax movq %rsp,(%rax) -{$if FPC_FULLVERSION>30200} +{$if (FPC_FULLVERSION>30200) and not defined(FPC_USE_LIBC)} call InitTLS -{$endif FPC_FULLVERSION>30200} +{$endif FPC_FULLVERSION>30200 and not FPC_USE_LIBC} xorq %rbp, %rbp call PASCALMAIN From efe6b32638c26cdd511b8ed35ffa9074817dcf20 Mon Sep 17 00:00:00 2001 From: svenbarth Date: Sat, 9 Jan 2021 15:58:18 +0000 Subject: [PATCH 11/19] + add declaration of FpSchedGetAffinity when the Linux target is compiled with FPC_USE_LIBC git-svn-id: trunk@48121 - --- rtl/unix/oscdeclh.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtl/unix/oscdeclh.inc b/rtl/unix/oscdeclh.inc index 291e5e2f70..abfabe073a 100644 --- a/rtl/unix/oscdeclh.inc +++ b/rtl/unix/oscdeclh.inc @@ -180,4 +180,6 @@ const {$endif} function FpTime (tloc:ptime_t): time_t; cdecl; external clib name 'time'; - +{$if defined(linux)} + function FpSchedGetAffinity(pid : pid_t;cpusetsize : size_t;mask : pcpu_set_t) : cint; cdecl; external clib name 'sched_getaffinity'; +{$endif} From 227bd3e9041fa1347905fcf666a951382c1a0f09 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 9 Jan 2021 18:21:49 +0000 Subject: [PATCH 12/19] * simplified code for JccAdd2SetccAdd optimization git-svn-id: trunk@48122 - --- compiler/x86/aoptx86.pas | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index 0c739c3237..f0c1e10f45 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -5693,6 +5693,7 @@ unit aoptx86; symbol: TAsmSymbol; reg: tsuperregister; regavailable: Boolean; + tmpreg: TRegister; begin result:=false; symbol:=nil; @@ -5796,17 +5797,16 @@ unit aoptx86; ((Taicpu(hp1).opcode=A_INC) or (Taicpu(hp1).opcode=A_DEC)) ) then begin - TransferUsedRegs(TmpUsedRegs); - UpdateUsedRegs(TmpUsedRegs, tai(p.next)); - { search for an available register which is volatile } regavailable:=false; for reg in tcpuregisterset do begin + tmpreg:=newreg(R_INTREGISTER,reg,R_SUBL); if (reg in paramanager.get_volatile_registers_int(current_procinfo.procdef.proccalloption)) and - not(reg in TmpUsedRegs[R_INTREGISTER].GetUsedRegs) and - not(RegInInstruction(newreg(R_INTREGISTER,reg,R_SUBL),hp1)) + not(reg in UsedRegs[R_INTREGISTER].GetUsedRegs) and + not(RegInInstruction(tmpreg,hp1)) {$ifdef i386} + { use only registers which can be accessed byte wise } and (reg in [RS_EAX,RS_EBX,RS_ECX,RS_EDX]) {$endif i386} then @@ -5818,23 +5818,24 @@ unit aoptx86; if regavailable then begin + TAsmLabel(symbol).decrefs; Taicpu(p).clearop(0); Taicpu(p).ops:=1; Taicpu(p).is_jmp:=false; Taicpu(p).opcode:=A_SETcc; DebugMsg(SPeepholeOptimization+'JccAdd2SetccAdd',p); Taicpu(p).condition:=inverse_cond(Taicpu(p).condition); - Taicpu(p).loadreg(0,newreg(R_INTREGISTER,reg,R_SUBL)); + Taicpu(p).loadreg(0,tmpreg); if getsubreg(Taicpu(hp1).oper[1]^.reg)<>R_SUBL then begin case getsubreg(Taicpu(hp1).oper[1]^.reg) of R_SUBW: - hp2:=Taicpu.op_reg_reg(A_MOVZX,S_BW,newreg(R_INTREGISTER,reg,R_SUBL), + hp2:=Taicpu.op_reg_reg(A_MOVZX,S_BW,tmpreg, newreg(R_INTREGISTER,reg,R_SUBW)); R_SUBD, R_SUBQ: - hp2:=Taicpu.op_reg_reg(A_MOVZX,S_BL,newreg(R_INTREGISTER,reg,R_SUBL), + hp2:=Taicpu.op_reg_reg(A_MOVZX,S_BL,tmpreg, newreg(R_INTREGISTER,reg,R_SUBD)); else Internalerror(2020030601); From eb81b981cd66a1ab82fa0dcc05119e3a9c5a09d6 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 10 Jan 2021 10:23:40 +0000 Subject: [PATCH 13/19] * patch by J. Gareth Moreton to fix MovzxCmp2CmpMovzx, resolves #38339 git-svn-id: trunk@48124 - --- compiler/x86/aoptx86.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index f0c1e10f45..1fe5d418b8 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -7523,7 +7523,8 @@ unit aoptx86; (taicpu(hp1).opcode = A_TEST) and MatchOperand(taicpu(hp1).oper[0]^, taicpu(hp1).oper[1]^) ) ) and - (reg2opsize(taicpu(hp1).oper[1]^.reg) <= reg2opsize(taicpu(p).oper[1]^.reg)) then + (reg2opsize(taicpu(hp1).oper[1]^.reg) <= reg2opsize(taicpu(p).oper[1]^.reg)) and + SuperRegistersEqual(taicpu(p).oper[1]^.reg, taicpu(hp1).oper[1]^.reg) then begin PreMessage := debug_op2str(taicpu(hp1).opcode) + debug_opsize2str(taicpu(hp1).opsize) + ' ' + debug_operstr(taicpu(hp1).oper[0]^) + ',' + debug_regname(taicpu(hp1).oper[1]^.reg) + ' -> ' + debug_op2str(taicpu(hp1).opcode); From 469959d9b52e49254c45885e9e9f6d631a3481b6 Mon Sep 17 00:00:00 2001 From: svenbarth Date: Sun, 10 Jan 2021 10:55:18 +0000 Subject: [PATCH 14/19] * clear up message that a global generic references a static symbol a bit git-svn-id: trunk@48125 - --- compiler/msg/errore.msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg index 997eef24f1..3631c1ac45 100644 --- a/compiler/msg/errore.msg +++ b/compiler/msg/errore.msg @@ -1555,7 +1555,7 @@ parser_w_ptr_type_ignored=03338_W_Pointer type "$1" ignored % The specified pointer type modifier is ignored, because it is not supported on % the current platform. This happens, for example, when a far pointer is % declared on a non-x86 platform. -parser_e_global_generic_references_static=03339_E_Global Generic template references static symtable +parser_e_global_generic_references_static=03339_E_Generic template in interface section references symbol in implementation section % A generic declared in the interface section of a unit must not reference symbols that belong % solely to the implementation section of that unit. parser_u_already_compiled=03340_UL_Unit $1 has been already compiled meanwhile. From 217e9ac5a5714fa60214616b33f0e7a0860c2a64 Mon Sep 17 00:00:00 2001 From: svenbarth Date: Sun, 10 Jan 2021 10:55:26 +0000 Subject: [PATCH 15/19] * regenerate msg*.inc files git-svn-id: trunk@48126 - --- compiler/msgidx.inc | 2 +- compiler/msgtxt.inc | 958 ++++++++++++++++++++++---------------------- 2 files changed, 482 insertions(+), 478 deletions(-) diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc index 3e712aecf3..2ceaf408e9 100644 --- a/compiler/msgidx.inc +++ b/compiler/msgidx.inc @@ -1136,7 +1136,7 @@ const option_info=11024; option_help_pages=11025; - MsgTxtSize = 86896; + MsgTxtSize = 86927; MsgIdxMax : array[1..20] of longint=( 28,107,361,130,99,63,145,36,223,68, diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc index f16f94d17d..80be8dc4c4 100644 --- a/compiler/msgtxt.inc +++ b/compiler/msgtxt.inc @@ -560,837 +560,839 @@ const msgtxt : array[0..000362,1..240] of char=( '03337_E_Default values can only be specified for value, const and',' co'+ 'nstref parameters'#000+ '03338_W_Pointer type "$1" ignored'#000+ - '03339_E_Global Generic template references static symtable'#000+ + '03339_E_Generic template in interface section references symbol in imp'+ + 'lementation section'#000+ '03340_UL_Unit $1 has been already compiled meanwhile.'#000+ - '03341_E_Explicit implementation of methods for specializations of gene'+ - 'ri','cs is not allowed'#000+ + '03341_E_Explicit implementation of method','s for specializations of ge'+ + 'nerics is not allowed'#000+ '03342_E_Generic methods are not allowed in interfaces'#000+ '03343_E_Generic methods can not be virtual'#000+ '03344_E_Dynamic packages not supported for target OS'#000+ - '03345_E_The HardFloat directive cannot be used if soft float code is g'+ - 'en','erated or fpu emulation is turned on'#000+ + '03345_E_The HardFloat directive cannot be',' used if soft float code is'+ + ' generated or fpu emulation is turned on'#000+ '03346_E_Index $1 is not a valid internal function index'#000+ '03347_W_Operator overload hidden by internal operator: "$1" $2 "$3"'#000+ - '03348_E_Thread variables inside classes or records must be class varia'+ - 'bles'#000+ - '0334','9_E_Only static methods and static variables can be referenced t'+ - 'hrough an object type'#000+ + '03348_E_Thread variables inside classes or recor','ds must be class var'+ + 'iables'#000+ + '03349_E_Only static methods and static variables can be referenced thr'+ + 'ough an object type'#000+ '03350_E_Cannot redeclare C-style variadic function "$1" as external on'+ - ' this platform; make its first declaration already external'#000+ - '03351_E_Unbound custom a','ttribute: "$1".'#000+ + ' this platform; make its first declaration already ex','ternal'#000+ + '03351_E_Unbound custom attribute: "$1".'#000+ '03352_E_Enumeration symbols can only have values in the range of -2^31'+ ' to 2^31-1'#000+ '03353_W_Enumeration symbols can only have values in the range of -2^31'+ ' to 2^31-1'#000+ - '03354_E_Implementing a method for type "$1" declared in anothe','r unit'+ + '03354_E_Implementing a method f','or type "$1" declared in another unit'+ #000+ '03355_E_Generic constraint not allowed here'#000+ '03356_E_Explicit location is too small for parameter'#000+ '03357_E_Explicit location size is larger than required by parameter'#000+ - '03358_E_Only data registers are supported for explicit location regi','s'+ - 'ter pairs'#000+ + '03358_E_Only data registers are suppo','rted for explicit location regi'+ + 'ster pairs'#000+ '03359_E_Only consecutive registers are supported for explicit location'+ ' register pairs'#000+ '03360_E_Constructors cannot take type parameters'#000+ '04000_E_Type mismatch'#000+ - '04001_E_Incompatible types: got "$1" expected "$2"'#000+ - '04002_E_Type mismatch',' between "$1" and "$2"'#000+ + '04001_E_Incompatible types: got "$1" expe','cted "$2"'#000+ + '04002_E_Type mismatch between "$1" and "$2"'#000+ '04003_E_Type identifier expected'#000+ '04004_E_Variable identifier expected'#000+ '04005_E_Integer expression expected, but got "$1"'#000+ '04006_E_Boolean expression expected, but got "$1"'#000+ - '04007_E_Ordinal expression expected'#000+ - '04008_E_Poi','nter type expected, but got "$1"'#000+ + '04007_E_Ordinal ','expression expected'#000+ + '04008_E_Pointer type expected, but got "$1"'#000+ '04009_E_Class type expected, but got "$1"'#000+ '04011_E_Can'#039't evaluate constant expression'#000+ '04012_E_Set elements are not compatible'#000+ '04013_E_Operation not implemented for sets'#000+ - '04014_W_Automatic type conversion from ','floating type to COMP which i'+ + '04014_W_','Automatic type conversion from floating type to COMP which i'+ 's an integer type'#000+ '04015_H_Use DIV instead to get an integer result'#000+ '04016_E_String types have to match exactly in $V+ mode'#000+ - '04017_E_Succ or Pred on enums with assignments not possible'#000+ - '04018_E_Can'#039't read or write v','ariables of this type'#000+ + '04017_E_Succ or Pred on enums with assignments not possibl','e'#000+ + '04018_E_Can'#039't read or write variables of this type'#000+ '04019_E_Can'#039't use readln or writeln on typed file'#000+ '04020_E_Can'#039't use read or write on untyped file.'#000+ '04021_E_Type conflict between set elements'#000+ - '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+ - '04023_E_Intege','r or real expression expected'#000+ + '04022_W_lo/hi(dword/qword) returns the upper/','lower word/dword'#000+ + '04023_E_Integer or real expression expected'#000+ '04024_E_Wrong type "$1" in array constructor'#000+ '04025_E_Incompatible type for arg no. $1: Got "$2", expected "$3"'#000+ - '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+ - '04027_E_Illegal constant pass','ed to internal math function'#000+ + '04026_E_Method (variable) and Procedure (variable) are not compatibl','e'+ + #000+ + '04027_E_Illegal constant passed to internal math function'#000+ '04028_E_Can'#039't take the address of constant expressions'#000+ '04029_E_Argument cannot be assigned to'#000+ '04030_E_Can'#039't assign local procedure/function to procedure variabl'+ 'e'#000+ - '04031_E_Can'#039't assign values to an address'#000+ - '04032_E','_Can'#039't assign values to const variable'#000+ + '04031_E_Can'#039't assi','gn values to an address'#000+ + '04032_E_Can'#039't assign values to const variable'#000+ '04033_E_Array type required'#000+ '04034_E_Interface type expected, but got "$1"'#000+ '04035_H_Mixing signed expressions and longwords gives a 64bit result'#000+ - '04036_W_Mixing signed expressions and cardinals here may c','ause a ran'+ + '04036_W_Mixing signed expre','ssions and cardinals here may cause a ran'+ 'ge check error'#000+ '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+ '04038_E_Enums with assignments cannot be used as array index'#000+ '04039_E_Class or Object types "$1" and "$2" are not related'#000+ - '04040_W_Class types "$1" and "$2"',' are not related'#000+ + '04','040_W_Class types "$1" and "$2" are not related'#000+ '04041_E_Class or interface type expected, but got "$1"'#000+ '04042_E_Type "$1" is not completely defined'#000+ '04043_W_String literal has more characters than short string length'#000+ - '04044_W_Comparison might be always false due to range of',' constant an'+ + '04044_W_Comparison might ','be always false due to range of constant an'+ 'd expression'#000+ '04045_W_Comparison might be always true due to range of constant and e'+ 'xpression'#000+ '04046_W_Constructing a class "$1" with abstract method "$2"'#000+ - '04047_H_The left operand of the IN operator should be byte sized'#000+ - '04048_W_Ty','pe size mismatch, possible loss of data / range check erro'+ - 'r'#000+ + '04047_H_The left operand of the IN operator ','should be byte sized'#000+ + '04048_W_Type size mismatch, possible loss of data / range check error'#000+ '04049_H_Type size mismatch, possible loss of data / range check error'#000+ '04050_E_The address of an abstract method cannot be taken'#000+ - '04051_E_Assignments to formal parameters and open ar','rays are not pos'+ + '04051_E_Assignments t','o formal parameters and open arrays are not pos'+ 'sible'#000+ '04052_E_Constant Expression expected'#000+ '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+ '04054_E_Illegal type conversion: "$1" to "$2"'#000+ - '04055_H_Conversion between ordinals and pointers is not portable'#000+ - '04056_W_C','onversion between ordinals and pointers is not portable'#000+ + '04055_H_Conversion between ordinals and poi','nters is not portable'#000+ + '04056_W_Conversion between ordinals and pointers is not portable'#000+ '04057_E_Can'#039't determine which overloaded function to call'#000+ '04058_E_Illegal counter variable'#000+ - '04059_W_Converting constant real value to double for C variable argume'+ - 'nt, add explicit typeca','st to prevent this.'#000+ + '04059_W_Converting constant real value to double for C variabl','e argu'+ + 'ment, add explicit typecast to prevent this.'#000+ '04060_E_Class or COM interface type expected, but got "$1"'#000+ '04061_E_Constant packed arrays are not yet supported'#000+ '04062_E_Incompatible type for arg no. $1: Got "$2" expected "(Bit)Pack'+ - 'ed Array"'#000+ - '04063_E_Incompatible type fo','r arg no. $1: Got "$2" expected "(not pa'+ - 'cked) Array"'#000+ + 'ed Arra','y"'#000+ + '04063_E_Incompatible type for arg no. $1: Got "$2" expected "(not pack'+ + 'ed) Array"'#000+ '04064_E_Elements of packed arrays cannot be of a type which need to be'+ ' initialised'#000+ '04065_E_Constant packed records and objects are not yet supported'#000+ - '04066_W_Arithmetic "$1" on untyped poi','nter is unportable to {$T+}, s'+ + '04066_W','_Arithmetic "$1" on untyped pointer is unportable to {$T+}, s'+ 'uggest typecast'#000+ '04076_E_Can'#039't take address of a subroutine marked as local'#000+ '04077_E_Can'#039't export subroutine marked as local from a unit'#000+ '04078_E_Type is not automatable: "$1"'#000+ - '04079_H_Converting the operands to "$','1" before doing the add could p'+ + '04079_','H_Converting the operands to "$1" before doing the add could p'+ 'revent overflow errors.'#000+ '04080_H_Converting the operands to "$1" before doing the subtract coul'+ 'd prevent overflow errors.'#000+ - '04081_H_Converting the operands to "$1" before doing the multiply coul'+ - 'd prevent overflow',' errors.'#000+ + '04081_H_Converting the operands to "$1" before doing the ','multiply co'+ + 'uld prevent overflow errors.'#000+ '04082_W_Converting pointers to signed integers may result in wrong com'+ 'parison results and range errors, use an unsigned type instead.'#000+ '04083_E_Interface type $1 has no valid GUID'#000+ - '04084_E_Invalid selector name "$1"'#000+ - '04085_E_Expected O','bjective-C method, but got $1'#000+ + '04084_E_Invalid select','or name "$1"'#000+ + '04085_E_Expected Objective-C method, but got $1'#000+ '04086_E_Expected Objective-C method or constant method name'#000+ '04087_E_No type info available for this type'#000+ '04088_E_Ordinal or string expression expected'#000+ - '04089_E_String expression expected'#000+ - '04090_W_Converting 0 to ','NIL'#000+ + '04089_E_String expression ex','pected'#000+ + '04090_W_Converting 0 to NIL'#000+ '04091_E_Objective-C protocol type expected, but got "$1"'#000+ '04092_E_The type "$1" is not supported for interaction with the Object'+ 'ive-C and the blocks runtime.'#000+ - '04093_E_Class or objcclass type expected, but got "$1"'#000+ - '04094_E_Objcclass type e','xpected'#000+ + '04093_E_Class or objcclass type expected, but go','t "$1"'#000+ + '04094_E_Objcclass type expected'#000+ '04095_W_Coerced univ parameter type in procedural variable may cause c'+ 'rash or memory corruption: $1 to $2'#000+ '04096_E_Type parameters of specializations of generics cannot referenc'+ - 'e the currently specialized type'#000+ - '04097_E_Type parameters',' are not allowed on non-generic class/record/'+ - 'object procedure or function'#000+ + 'e the currently specializ','ed type'#000+ + '04097_E_Type parameters are not allowed on non-generic class/record/ob'+ + 'ject procedure or function'#000+ '04098_E_Generic declaration of "$1" differs from previous declaration'#000+ '04099_E_Helper type expected'#000+ '04100_E_Record type expected'#000+ - '04101_E_Derived class helper must exte','nd a subclass of "$1" or the c'+ + '04101_E','_Derived class helper must extend a subclass of "$1" or the c'+ 'lass itself'#000+ '04102_E_Derived record or type helper must extend "$1"'#000+ '04103_E_Invalid assignment, procedures return no value'#000+ - '04104_W_Implicit string type conversion from "$1" to "$2"'#000+ - '04105_W_Implicit string type c','onversion with potential data loss fro'+ - 'm "$1" to "$2"'#000+ + '04104_W_Implicit string type conversion from "$1" to "$2"',#000+ + '04105_W_Implicit string type conversion with potential data loss from '+ + '"$1" to "$2"'#000+ '04106_-W_Explicit string typecast from "$1" to "$2"'#000+ '04107_-W_Explicit string typecast with potential data loss from "$1" t'+ 'o "$2"'#000+ - '04108_W_Unicode constant cast with potential data loss'#000+ - '041','09_E_Range check error while evaluating constants ($1 must be bet'+ - 'ween $2 and $3)'#000+ + '04108_W_Unicode constant ca','st with potential data loss'#000+ + '04109_E_Range check error while evaluating constants ($1 must be betwe'+ + 'en $2 and $3)'#000+ '04110_W_Range check error while evaluating constants ($1 must be betwe'+ 'en $2 and $3)'#000+ - '04111_E_This type is not supported for the Default() intrinsic'#000+ - '04112_E_JVM ','virtual class methods cannot be static'#000+ + '04111_E_This type is not supported for the D','efault() intrinsic'#000+ + '04112_E_JVM virtual class methods cannot be static'#000+ '04113_E_Final (class) fields can only be assigned in their class'#039' '+ '(class) constructor'#000+ '04114_E_It is not possible to typecast untyped parameters on managed p'+ - 'latforms, simply assign a value to them inste','ad.'#000+ + 'latforms, simp','ly assign a value to them instead.'#000+ '04115_E_The assignment side of an expression cannot be typecasted to a'+ ' supertype on managed platforms'#000+ '04116_-W_The interface method "$1" raises the visibility of "$2" to pu'+ - 'blic when accessed via an interface instance'#000+ - '04117_E_The interfa','ce method "$1" has a higher visibility (public) t'+ - 'han "$2"'#000+ + 'blic when accessed via an interfa','ce instance'#000+ + '04117_E_The interface method "$1" has a higher visibility (public) tha'+ + 'n "$2"'#000+ '04118_E_TYPEOF can only be used on object types with VMT'#000+ '04119_E_It is not possible to define a default value for a parameter o'+ 'f type "$1"'#000+ - '04120_E_Type "$1" cannot be extended by a t','ype helper'#000+ + '04120_E_Type',' "$1" cannot be extended by a type helper'#000+ '04121_E_Procedure or function must be far in order to allow taking its'+ ' address: "$1"'#000+ '04122_W_Creating an instance of abstract class "$1"'#000+ - '04123_E_Subroutine references cannot be declared as "of object" or "is'+ - ' nested", they can alw','ays refer to any kind of subroutine'#000+ + '04123_E_Subroutine references cannot be declared as "of objec','t" or "'+ + 'is nested", they can always refer to any kind of subroutine'#000+ '04124_E_Procedure variables in that memory model do not store segment '+ 'information'#000+ '04125_W_The first value of a set constructur range is greater then the'+ - ' second value, so the range describes an empty set.'#000, + ' second value, so the',' range describes an empty set.'#000+ '04126_E_C block reference must use CDECL or MWPASCAL calling conventio'+ 'n.'#000+ '04127_E_The interface type of the forward declaration and the declared'+ ' interface type do not match for interface $1'#000+ - '04128_E_Type not allowed for generic constant param','eter: $1'#000+ + '04128_E_Type not all','owed for generic constant parameter: $1'#000+ '04129_E_Can'#039't read or write variables of this type in iso mode'#000+ '05000_E_Identifier not found "$1"'#000+ '05001_F_Internal Error in SymTableStack()'#000+ '05002_E_Duplicate identifier "$1"'#000+ - '05003_H_Identifier already defined in $1 at line $2'#000+ - '05004_','E_Unknown identifier "$1"'#000+ + '05003_H_Identifier already ','defined in $1 at line $2'#000+ + '05004_E_Unknown identifier "$1"'#000+ '05005_E_Forward declaration not solved "$1"'#000+ '05007_E_Error in type definition'#000+ '05009_E_Forward type not resolved "$1"'#000+ - '05010_E_Only static variables can be used in static methods or outside'+ - ' methods'#000+ - '05012_E_Record or o','bject or class type expected'#000+ + '05010_E_Only static variables can be used in static methods or outs','i'+ + 'de methods'#000+ + '05012_E_Record or object or class type expected'#000+ '05013_E_Instances of classes or objects with an abstract method are no'+ 't allowed'#000+ '05014_W_Label not defined "$1"'#000+ '05015_E_Label used but not defined "$1"'#000+ - '05016_E_Illegal label declaration'#000+ - '05017_E_GOTO and LABEL are',' not supported (use switch -Sg)'#000+ + '05016_E_Illegal label declara','tion'#000+ + '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+ '05018_E_Label not found'#000+ '05019_E_Identifier isn'#039't a label'#000+ '05020_E_Label already defined'#000+ '05021_E_Illegal type declaration of set elements'#000+ - '05022_E_Forward class definition not resolved "$1"'#000+ - '05023_H_Unit "$1" not',' used in $2'#000+ + '05022_E_Forward class definition not reso','lved "$1"'#000+ + '05023_H_Unit "$1" not used in $2'#000+ '05024_H_Parameter "$1" not used'#000+ '05025_N_Local variable "$1" not used'#000+ '05026_H_Value parameter "$1" is assigned but never used'#000+ '05027_N_Local variable "$1" is assigned but never used'#000+ - '05028_H_Local $1 "$2" is not used'#000+ - '05029_N_Privat','e field "$1.$2" is never used'#000+ + '05028_H_Local $1 ','"$2" is not used'#000+ + '05029_N_Private field "$1.$2" is never used'#000+ '05030_N_Private field "$1.$2" is assigned but never used'#000+ '05031_N_Private method "$1.$2" never used'#000+ '05032_E_Set type expected'#000+ '05033_W_Function result does not seem to be set'#000+ - '05034_W_Type "$1" is not aligned corr','ectly in current record for C'#000+ + '05034_','W_Type "$1" is not aligned correctly in current record for C'#000+ '05035_E_Unknown record field identifier "$1"'#000+ '05036_W_Local variable "$1" does not seem to be initialized'#000+ '05037_W_Variable "$1" does not seem to be initialized'#000+ - '05038_E_Identifier idents no member "$1"'#000+ - '05039_H_Fo','und declaration: $1'#000+ + '05038_E_Identifier i','dents no member "$1"'#000+ + '05039_H_Found declaration: $1'#000+ '05040_E_Data element too large'#000+ '05042_E_No matching implementation for interface method "$1" found'#000+ '05043_W_Symbol "$1" is deprecated'#000+ '05044_W_Symbol "$1" is not portable'#000+ - '05055_W_Symbol "$1" is not implemented'#000+ - '05056_E_Can'#039't',' create unique type from this type'#000+ + '05055_W_Symbol "$1" i','s not implemented'#000+ + '05056_E_Can'#039't create unique type from this type'#000+ '05057_H_Local variable "$1" does not seem to be initialized'#000+ '05058_H_Variable "$1" does not seem to be initialized'#000+ - '05059_W_Function result variable does not seem to be initialized'#000+ - '05060_H_Function result va','riable does not seem to be initialized'#000+ + '05059_W_Function result variable does not seem to be initial','ized'#000+ + '05060_H_Function result variable does not seem to be initialized'#000+ '05061_W_Variable "$1" read but nowhere assigned'#000+ '05062_H_Found abstract method: $1'#000+ '05063_W_Symbol "$1" is experimental'#000+ - '05064_W_Forward declaration "$1" not resolved, assumed external'#000+ - '05065_W_Symbol "$1"',' is belongs to a library'#000+ + '05064_W_Forward declaration "$1" not resolved, assum','ed external'#000+ + '05065_W_Symbol "$1" is belongs to a library'#000+ '05066_W_Symbol "$1" is deprecated: "$2"'#000+ '05067_E_Cannot find an enumerator for the type "$1"'#000+ '05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+ - '05069_E_Cannot find a "Current" property in enumerator "$1"'#000+ - '0507','0_E_Mismatch between number of declared parameters and number of'+ - ' colons in message string.'#000+ + '05069_E_Cannot find a "Current" p','roperty in enumerator "$1"'#000+ + '05070_E_Mismatch between number of declared parameters and number of c'+ + 'olons in message string.'#000+ '05071_N_Private type "$1.$2" never used'#000+ '05072_N_Private const "$1.$2" never used'#000+ - '05073_N_Private property "$1.$2" never used'#000+ - '05074_W_Unit "$1" is dep','recated'#000+ + '05073_N_Private property "$1.$2" neve','r used'#000+ + '05074_W_Unit "$1" is deprecated'#000+ '05075_W_Unit "$1" is deprecated: "$2"'#000+ '05076_W_Unit "$1" is not portable'#000+ '05077_W_Unit "$1" is belongs to a library'#000+ '05078_W_Unit "$1" is not implemented'#000+ '05079_W_Unit "$1" is experimental'#000+ - '05080_E_No full definition of the formally decl','ared class "$1" is in'+ + '05080_E_No full ','definition of the formally declared class "$1" is in'+ ' scope. Add the unit containing its full definition to the uses clause'+ '.'#000+ '05081_E_Gotos into initialization or finalization blocks of units are '+ 'not allowed'#000+ - '05082_E_Invalid external name "$1" for formal class "$2"'#000+ - '05083_E_','Complete class definition with external name "$1" here'#000+ + '05082_E_Invalid external name "$1"',' for formal class "$2"'#000+ + '05083_E_Complete class definition with external name "$1" here'#000+ '05084_W_Possible library conflict: symbol "$1" from library "$2" also '+ 'found in library "$3"'#000+ - '05085_E_Cannot add implicit constructor '#039'Create'#039' because ident'+ + '05085_E_Cannot add implicit constructor '#039'Create'#039' because ident', 'ifier already used by "$1"'#000+ - '0508','6_E_Cannot generate default constructor for class, because paren'+ - 't has no parameterless constructor'#000+ + '05086_E_Cannot generate default constructor for class, because parent '+ + 'has no parameterless constructor'#000+ '05087_D_Adding helper for $1'#000+ '05088_E_Found declaration: $1'#000+ - '05089_W_Local variable "$1" of a managed type does not seem to be init'+ - 'ialized'#000+ - '0509','0_W_Variable "$1" of a managed type does not seem to be initiali'+ - 'zed'#000+ + '05089_W_Local variable "$1" of a managed type does ','not seem to be in'+ + 'itialized'#000+ + '05090_W_Variable "$1" of a managed type does not seem to be initialize'+ + 'd'#000+ '05091_H_Local variable "$1" of a managed type does not seem to be init'+ 'ialized'#000+ - '05092_H_Variable "$1" of a managed type does not seem to be initialize'+ - 'd'#000+ - '05093_W_Function resul','t variable of a managed type does not seem to '+ - 'be initialized'#000+ + '05092_H_Variable "$1" of a managed type does not seem to be ini','tiali'+ + 'zed'#000+ + '05093_W_Function result variable of a managed type does not seem to be'+ + ' initialized'#000+ '05094_H_Function result variable of a managed type does not seem to be'+ ' initialized'#000+ '05095_W_Duplicate identifier "$1"'#000+ - '05096_E_Generic type parameter "$1" does not match with the on','e in t'+ + '05096_E_Generic type parameter ','"$1" does not match with the one in t'+ 'he declaration'#000+ '05097_E_Generic type parameter declared as "$1"'#000+ '05098_E_Record or object type expected'#000+ '06009_E_Parameter list size exceeds 65535 bytes'#000+ '06012_E_File types must be var parameters'#000+ - '06013_E_The use of a far pointer isn'#039't all','owed there'#000+ + '06013_E_The',' use of a far pointer isn'#039't allowed there'#000+ '06015_E_EXPORT declared functions cannot be called'#000+ '06016_W_Possible illegal call of constructor or destructor'#000+ '06017_N_Inefficient code'#000+ '06018_W_Unreachable code'#000+ - '06020_E_Abstract methods cannot be called directly'#000+ - '06027_DL_Register ','$1 weight $2 $3'#000+ + '06020_E_Abstract methods cannot be cal','led directly'#000+ + '06027_DL_Register $1 weight $2 $3'#000+ '06029_DL_Stack frame is omitted'#000+ '06031_E_Object or class methods cannot be inline.'#000+ '06032_E_Procvar calls cannot be inline.'#000+ '06033_E_No code for inline procedure stored'#000+ - '06035_E_Element zero of an ansi/wide- or longstring cannot',' be access'+ + '06035_E_Element zero of an ','ansi/wide- or longstring cannot be access'+ 'ed, use (set)length instead'#000+ '06037_E_Constructors or destructors cannot be called inside a '#039'wit'+ 'h'#039' clause'#000+ '06038_E_Cannot call message handler methods directly'#000+ - '06039_E_Jump in or outside of an exception block'#000+ - '06040_E_Control flow sta','tements are not allowed in a finally block'#000+ + '06039_E_Jump in or outside of an exception',' block'#000+ + '06040_E_Control flow statements are not allowed in a finally block'#000+ '06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+ '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+ - '06043_E_Local variables size exceeds supported limit'#000+ + '06043_E_Local variables size exceeds supported limi','t'#000+ '06044_E_BREAK not allowed'#000+ - '060','45_E_CONTINUE not allowed'#000+ + '06045_E_CONTINUE not allowed'#000+ '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+ 'me library.'#000+ '06047_F_Cannot find system type "$1". Check if you use the correct run'+ ' time library.'#000+ - '06048_H_Inherited call to abstract method ignor','ed'#000+ + '06048_H_Inherite','d call to abstract method ignored'#000+ '06049_E_Goto label "$1" not defined or optimized away'#000+ '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+ 'ct run time library.'#000+ - '06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+ - '06052_E_Label must be de','fined in the same scope as it is declared'#000+ + '06051_E_Interprocedural gotos are allowed only to outer subro','utines'#000+ + '06052_E_Label must be defined in the same scope as it is declared'#000+ '06053_E_Leaving procedures containing explicit or implicit exceptions '+ 'frames using goto is not allowed'#000+ - '06054_E_In ISO mode, the mod operator is defined only for positive quo'+ - 'tient'#000+ - '06055_DL_Auto inlin','ing: $1'#000+ + '06054_E_In ISO mode, the mod operator is defined only for positi','ve q'+ + 'uotient'#000+ + '06055_DL_Auto inlining: $1'#000+ '06056_E_The function used, is not supported by the selected instructio'+ 'n set: $1'#000+ '06057_F_Maximum number of units ($1) reached for the current target'#000+ - '06058_N_Call to subroutine "$1" marked as inline is not inlined'#000+ - '06059_E_Case stateme','nt does not handle ordinal value "$1", and no el'+ - 'se/otherwise statement is present.'#000+ + '06058_N_Call to subroutine "$1" marked as inline is n','ot inlined'#000+ + '06059_E_Case statement does not handle ordinal value "$1", and no else'+ + '/otherwise statement is present.'#000+ '06060_W_Case statement does not handle all possible cases'#000+ - '06061_W_The current subroutine "$1" cannot be compiled for the target '+ - 'CPU, creating dummy'#000+ - '06062_W_T','he target CPU does not support preserving the registers in '+ - 'subroutine "$1"'#000+ + '06061_W_The current subroutine "$1" cannot be compiled for the targe','t'+ + ' CPU, creating dummy'#000+ + '06062_W_The target CPU does not support preserving the registers in su'+ + 'broutine "$1"'#000+ '07000_DL_Starting $1 styled assembler parsing'#000+ '07001_DL_Finished $1 styled assembler parsing'#000+ '07002_E_Non-label pattern contains @'#000+ - '07004_E_Error building record offset',#000+ + '07004','_E_Error building record offset'#000+ '07005_E_OFFSET used without identifier'#000+ '07006_E_TYPE used without identifier'#000+ '07007_E_Cannot use local variable or parameters here'#000+ '07008_E_Need to use OFFSET here'#000+ '07009_E_Need to use $ here'#000+ - '07010_E_Cannot use multiple relocatable symbols'#000+ - '070','11_E_Relocatable symbol can only be added'#000+ + '07010_E_Cannot use m','ultiple relocatable symbols'#000+ + '07011_E_Relocatable symbol can only be added'#000+ '07012_E_Invalid constant expression'#000+ '07013_E_Relocatable symbol is not allowed'#000+ '07014_E_Invalid reference syntax'#000+ '07015_E_You cannot reach $1 from that code'#000+ - '07016_E_Local symbols/labels are not allowed',' as references'#000+ + '07016_E_Local',' symbols/labels are not allowed as references'#000+ '07017_E_Invalid base and index register usage'#000+ '07018_W_Possible error in object field handling'#000+ '07019_E_Wrong scale factor specified'#000+ '07020_E_Multiple index register usage'#000+ - '07021_E_Invalid operand type'#000+ - '07022_E_Invalid string as o','pcode operand: $1'#000+ + '07021_E_Invalid operand t','ype'#000+ + '07022_E_Invalid string as opcode operand: $1'#000+ '07023_W_@CODE and @DATA not supported'#000+ '07024_E_Null label references are not allowed'#000+ '07025_E_Divide by zero in asm evaluator'#000+ '07026_E_Illegal expression'#000+ '07027_E_Escape sequence ignored: $1'#000+ - '07028_E_Invalid symbol reference'#000+ - '07','029_W_Fwait can cause emulation problems with emu387'#000+ + '0702','8_E_Invalid symbol reference'#000+ + '07029_W_Fwait can cause emulation problems with emu387'#000+ '07030_W_$1 without operand translated into $1P'#000+ '07031_W_ENTER instruction is not supported by Linux kernel'#000+ - '07032_W_Calling an overload function in assembler'#000+ - '07033_E_Unsupported symbol type',' for operand'#000+ + '07032_W_Calling an overload function in assembler'#000, + '07033_E_Unsupported symbol type for operand'#000+ '07034_E_Constant value out of bounds'#000+ '07035_E_Error converting decimal $1'#000+ '07036_E_Error converting octal $1'#000+ '07037_E_Error converting binary $1'#000+ '07038_E_Error converting hexadecimal $1'#000+ - '07039_H_$1 translated to $2'#000+ - '07040_W_$1 is ass','ociated to an overloaded function'#000+ + '07039_H_$1 tra','nslated to $2'#000+ + '07040_W_$1 is associated to an overloaded function'#000+ '07041_E_Cannot use SELF outside a method'#000+ '07042_E_Cannot use OLDEBP outside a nested procedure'#000+ '07043_W_Procedures cannot return any value in asm code'#000+ - '07044_E_SEG not supported'#000+ - '07045_E_Size suffix and destina','tion or source size do not match'#000+ + '07044_E_SEG not supported'#000, + '07045_E_Size suffix and destination or source size do not match'#000+ '07046_W_Size suffix and destination or source size do not match'#000+ '07047_E_Assembler syntax error'#000+ '07048_E_Invalid combination of opcode and operands'#000+ - '07049_E_Assembler syntax error in operand'#000+ - '07050_E_Assembler s','yntax error in constant'#000+ + '07049_E_Assembler syntax error',' in operand'#000+ + '07050_E_Assembler syntax error in constant'#000+ '07051_E_Invalid String expression'#000+ '07052_W_Constant with symbol $1 for address which is not on a pointer'#000+ '07053_E_Unrecognized opcode $1'#000+ '07054_E_Invalid or missing opcode'#000+ - '07055_E_Invalid combination of prefix and opcod','e: $1'#000+ + '07055_E_Invalid ','combination of prefix and opcode: $1'#000+ '07056_E_Invalid combination of override and opcode: $1'#000+ '07057_E_Too many operands on line'#000+ '07058_W_NEAR ignored'#000+ '07059_W_FAR ignored'#000+ '07060_E_Duplicate local symbol $1'#000+ '07061_E_Undefined local symbol $1'#000+ - '07062_E_Unknown label identifier $1'#000, + '07062','_E_Unknown label identifier $1'#000+ '07063_E_Invalid register name'#000+ '07064_E_Invalid floating point register name'#000+ '07066_W_Modulo not supported'#000+ '07067_E_Invalid floating point constant $1'#000+ '07068_E_Invalid floating point expression'#000+ - '07069_E_Wrong symbol type'#000+ - '07070_E_Cannot index a lo','cal var or parameter with a register'#000+ + '07069_E_Wrong symbol',' type'#000+ + '07070_E_Cannot index a local var or parameter with a register'#000+ '07071_E_Invalid segment override expression'#000+ '07072_W_Identifier $1 supposed external'#000+ '07073_E_Strings not allowed as constants'#000+ '07074_E_No type of variable specified'#000+ - '07075_E_Assembler code not returned to t','ext section'#000+ + '07075_E_A','ssembler code not returned to text section'#000+ '07076_E_Not a directive or local symbol $1'#000+ '07077_E_Using a defined name as a local label'#000+ '07078_E_Dollar token is used without an identifier'#000+ '07079_W_32bit constant created for address'#000+ - '07080_N_.align is target specific, use .balig','n or .p2align'#000+ + '07080_N_.align',' is target specific, use .balign or .p2align'#000+ '07081_E_Cannot directly access fields of pointer-based parameters'#000+ '07082_E_Can'#039't access fields of objects/classes directly'#000+ '07083_E_No size specified and unable to determine the size of the oper'+ - 'ands'#000+ - '07084_E_Cannot use RESULT in ','this function'#000+ + 'and','s'#000+ + '07084_E_Cannot use RESULT in this function'#000+ '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+ '07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+ '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+ - '07089_E_Char < not allowed here'#000+ - '07090_E_Char > not allowed he','re'#000+ + '07089_E_Char < not allowed her','e'#000+ + '07090_E_Char > not allowed here'#000+ '07093_W_ALIGN not supported'#000+ '07094_E_Inc and Dec cannot be together'#000+ '07095_E_Invalid register list for MOVEM or FMOVEM'#000+ '07096_E_Reglist invalid for opcode'#000+ '07097_E_Higher cpu mode required ($1)'#000+ - '07098_W_No size specified and unable to determi','ne the size of the op'+ + '07098_W_No size ','specified and unable to determine the size of the op'+ 'erands, using DWORD as default'#000+ '07099_E_Syntax error while trying to parse a shifter operand'#000+ '07100_E_Address of packed component is not at a byte boundary'#000+ - '07101_W_No size specified and unable to determine the size of the',' op'+ + '07101_W_No size specified and unab','le to determine the size of the op'+ 'erands, using BYTE as default'#000+ '07102_W_Use of $1 for parameters invalid here'#000+ '07103_W_Use of $1 is not compatible with regcall convention'#000+ '07104_W_Use of $1 is not recommended for local variable access'#000+ - '07105_W_Use of $1, access may cause a ','crash or value may be lost'#000+ + '07105_W','_Use of $1, access may cause a crash or value may be 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+ - '07108_E_All registers in a register set must be of the same kind a','nd'+ + '07108_E_All registers in a register',' set must be of the same kind and'+ ' width'#000+ '07109_E_A register set cannot be empty'#000+ '07110_W_@GOTPCREL is useless and potentially dangerous for local symbo'+ 'ls'#000+ '07111_W_Constant with general purpose segment register'#000+ - '07112_E_Invalid offset value for $1'#000+ - '07113_E_Invalid register for',' $1'#000+ + '07112_E_Invalid offset value for ','$1'#000+ + '07113_E_Invalid register for $1'#000+ '07114_E_SEH directives are allowed only in pure assembler procedures'#000+ '07115_E_Directive "$1" is not supported for the current target'#000+ '07116_E_This function'#039's result location cannot be encoded directly'+ - ' in a single operand when "nostackfram','e" is used'#000+ + ' in a s','ingle operand when "nostackframe" is used'#000+ '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+ ' base or index register, and their offset must 0.'#000+ '07118_E_The current target does not support GOTPCREL relocations'#000+ - '07119_W_Exported/global symbols should be ac','cessed via the GOT'#000+ + '07119_W_Expor','ted/global symbols should be accessed via the GOT'#000+ '07120_W_Check size of memory operand "$1"'#000+ '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ 'ts, but expected [$3 bits]"'#000+ - '07122_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ - 'ts, but exp','ected [$3 bits + $4 byte offset]"'#000+ + '07122_W_Check size of memory operand "$1: memory-o','perand-size is $2 '+ + 'bits, but expected [$3 bits + $4 byte offset]"'#000+ '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+ '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+ - 'erent definitions of the memory size =>> map to $2 (smallest option)"'#000, + 'erent definitions of the memory size =>','> map to $2 (smallest option)'+ + '"'#000+ '07125_E_Invalid register used in memory reference expression: "$1"'#000+ '07126_E_SEG used without identifier'#000+ '07127_E_@CODE and @DATA can only be used with the SEG operator'#000+ - '07128_E_Not enough space (16 bits required) for the segment constant o'+ - 'f sy','mbol $1'#000+ + '07128_E_Not enough space (16 bits required)',' for the segment constant'+ + ' of symbol $1'#000+ '07129_E_Invalid value of .code directive constant'#000+ '07130_W_No size specified and unable to determine the size of the cons'+ 'tant, using BYTE as default'#000+ - '07131_W_No size specified and unable to determine the size of the cons'+ - 'tant, using WO','RD as default'#000+ + '07131_W_No size specified and unable to determine the',' size of the co'+ + 'nstant, using WORD as default'#000+ '07132_E_Cannot override ES segment'#000+ '07133_W_Reference is not valid here (expected "$1")'#000+ '07134_E_Address sizes do not match'#000+ '07135_E_Instruction "POP CS" is not valid for the current target'#000+ - '07136_W_Instruction "POP CS" is not por','table (it only works on 8086 '+ + '07136_W_','Instruction "POP CS" is not portable (it only works on 8086 '+ 'and 8088 CPUs)'#000+ '07137_E_Label $1 can only be declared public before it'#039's defined'#000+ '07138_E_Local label $1 cannot be declared public'#000+ '07139_E_Cannot use multiple segment overrides'#000+ - '07140_W_Multiple segment overrides (','only the last one will take effe'+ + '07140','_W_Multiple segment overrides (only the last one will take effe'+ 'ct)'#000+ '07141_W_Segment base $1 will be generated, but is ignored by the CPU i'+ 'n 64-bit mode'#000+ '07142_E_Mismatch broadcasting elements (expected: {$1} found: {$2})'#000+ - '07143_E_Invalid arrangement specifier "$1"'#000+ - '07144_E_R','egisters in a register set must be consecutive.'#000+ + '07143_E_Invalid arran','gement specifier "$1"'#000+ + '07144_E_Registers in a register set must be consecutive.'#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 binary writers'#000+ - '08004_E_Allocating of data is only all','owed in bss section'#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 supported'#000+ - '08009_E_Asm: Invalid effective address'#000+ - '08010_E','_Asm: Immediate or reference expected'#000+ + '08009_E_Asm: In','valid 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 supported for this target'#000+ - '08015_E_Asm: Extended type not sup','ported for this target'#000+ + '080','15_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+ - '08021_E_Asm: 64 Bit operands not supp','orted'#000+ + '08021_','E_Asm: 64 Bit operands not supported'#000+ '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+ ' REX prefix'#000+ '08023_E_Missing .seh_endprologue directive'#000+ '08024_E_Function prologue exceeds 255 bytes'#000+ - '08025_E_.seh_handlerdata directive without preceding .seh_handler',#000+ + '08025_E_.seh_handlerdata directive',' without preceding .seh_handler'#000+ '08026_F_Relocation count for section $1 exceeds 65535'#000+ '08027_N_Change of bind type of symbol $1 from $2 to $3 after use'#000+ '08028_H_Change of bind type of symbol $1 from $2 to $3 after use'#000+ - '08029_E_Asm: 32 Bit references not supported'#000+ - '08030_F_Co','de segment too large'#000+ + '08029_E_Asm: 32 Bit refe','rences not supported'#000+ + '08030_F_Code segment too large'#000+ '08031_F_Data segment too large'#000+ '08032_E_Instruction not supported by the selected instruction set'#000+ '08033_E_Asm: conditional branch destination is out of range'#000+ - '08034_E_Asm: RIP cannot be used as index register or with anot','her re'+ + '08034_E_Asm: RIP cannot be used',' as index register or with another re'+ 'gister in a reference'#000+ '08035_F_Illegal function size for SEH function'#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 (error code: $2)'#000, + '09003_E_Can'#039't create ob','ject file: $1 (error code: $2)'#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, e','rror $1 switching to external'+ + ' assembling'#000+ '09009_I_Assembling $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+ + '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+ - '09035_E_Creation of',' Static Libraries not supported'#000+ + '09019_E_Creation of Dynamic/Shared Libraries no','t supported'#000+ + '09035_E_Creation of Static Libraries not supported'#000+ '09020_I_Closing script $1'#000+ '09021_E_Resource compiler "$1" not found, switching to external mode'#000+ '09022_I_Compiling resource $1'#000+ - '09023_T_Unit $1 cannot be statically linked, switching to smart linkin'+ - 'g'#000+ - '09024_T_Uni','t $1 cannot be smart linked, switching to static linking'#000+ + '09023_T_Unit $1 cannot be statically linked, switchi','ng to smart link'+ + 'ing'#000+ + '09024_T_Unit $1 cannot be smart linked, switching to static linking'#000+ '09025_T_Unit $1 cannot be shared linked, switching to static linking'#000+ '09026_E_Unit $1 cannot be smart or static linked'#000+ - '09027_E_Unit $1 cannot be shared or static linked'#000+ - '09028_D_Calling',' resource compiler "$1" with "$2" as command line'#000+ + '09027_E_Unit $1 cannot be shared o','r static linked'#000+ + '09028_D_Calling resource compiler "$1" with "$2" as command line'#000+ '09029_E_Error while compiling resources'#000+ '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+ 'al mode'#000+ '09031_E_Can'#039't open resource file "$1"'#000+ - '09032_E_Can'#039't write resource file "$1"',#000+ + '09032_E','_Can'#039't write resource file "$1"'#000+ '09033_N_File "$1" not found for backquoted cat command'#000+ '09034_W_"$1" not found, this will probably cause a linking failure'#000+ '09128_F_Can'#039't post process 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+ + '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+ '09134_X_Stack space committed: $1 bytes'#000+ - '09200_F_Executable image size is too big for $1 target.'#000+ - '09201_W_Object file "$1" cont','ains 32-bit absolute relocation to symb'+ - 'ol "$2".'#000+ + '09200_F_Executable image size is too big for $1 target','.'#000+ + '09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+ + ' "$2".'#000+ '09202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+ '09203_E_Code segment "$1" too large (exceeds 64k by $2 bytes)'#000+ - '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000+ - '09205_E_','Segment "$1" too large (exceeds 64k by $2 bytes)'#000+ + '09204_E_Data segment "$1" too large (ex','ceeds 64k by $2 bytes)'#000+ + '09205_E_Segment "$1" too large (exceeds 64k by $2 bytes)'#000+ '09206_E_Group "$1" too large (exceeds 64k by $2 bytes)'#000+ '09207_E_Cannot create a .COM file, because the program contains segmen'+ 't relocations'#000+ - '09208_W_Program "$1" uses experimental CheckPointer ','option'#000+ + '09208_W_Program "$1" ','uses experimental CheckPointer option'#000+ '09209_E_Multiple defined symbol "$1"'#000+ '09210_E_COMDAT selection mode $1 not supported (section: "$1")'#000+ '09211_E_Associative section expected for COMDAT section "$1"'#000+ - '09212_E_COMDAT section selection mode doesn'#039't match for section "$'+ - '1" and',' symbol "$2"'#000+ + '09212_E_COMDAT section selection mode doe','sn'#039't match for section '+ + '"$1" and symbol "$2"'#000+ '09213_E_Associative COMDAT section for section "$1" not found'#000+ '09214_D_Discarding duplicate symbol "$1" due to COMDAT selection mode'#000+ - '09215_D_Discarding duplicate symbol "$1" with same size due to COMDAT '+ - 'selection mode'#000+ - '09216_D_Di','scarding duplicate symbol "$1" with same content due to CO'+ - 'MDAT selection mode'#000+ + '09215_D_Discarding duplicate symbol "$1" with same size due to C','OMDA'+ + 'T selection mode'#000+ + '09216_D_Discarding duplicate symbol "$1" with same content due to COMD'+ + 'AT selection mode'#000+ '09217_D_Replacing duplicate symbol "$1" with smaller size due to COMDA'+ 'T selection mode'#000+ - '09218_E_Size of duplicate COMDAT symbol "$1" differs'#000+ - '09219_E_Content of dup','licate COMDAT symbol "$1" differs'#000+ + '09218_E_Size of duplicate COMDAT symbol "$1"',' differs'#000+ + '09219_E_Content of duplicate COMDAT symbol "$1" differs'#000+ '09220_E_COMDAT selection mode for symbol "$1" differs'#000+ '09221_E_Undefined symbol: $1 (first seen in $2)'#000+ '09222_E_Undefined symbol: $1'#000+ '10000_T_Unitsearch: $1'#000+ - '10001_T_PPU Loading $1'#000+ + '10001_T_PPU Loading $','1'#000+ '10002_U_PPU Name: $1'#000+ - '10003_U_','PPU Flags: $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+ '10008_U_PPU Invalid Version $1'#000+ '10009_U_PPU is compiled for another processor'#000+ - '10010_U_PPU is compiled for anot','her target'#000+ + '1','0010_U_PPU is compiled for another 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 entry: $1'#000+ - '10017_F_PPU Dbx count problem'#000+ - '10018_E_Illegal unit name: ','$1 (expecting $2)'#000+ + '10017_F_PPU Dbx count prob','lem'#000+ + '10018_E_Illegal unit name: $1 (expecting $2)'#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+ '10022_F_Can'#039't find unit $1 used by $2'#000+ - '10023_W_Unit $1 was not found but $2 exists'#000+ - '10024_F_Unit $1',' searched but $2 found'#000+ + '10023_W_Unit $1 was not foun','d 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+ - '10029_U_Recompiling $','1, source found only'#000+ + '10028_U_Recompiling $1, checksum chang','ed 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+ - '10033_U_Recompiling unit, obj is older t','han asm'#000+ + '10033_U_R','ecompiling 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 modified include files'#000+ - '10041_U_File $1 is newer than t','he one used for creating PPU file $2'#000+ + '10040_W_Can'#039't recompile unit $1, but found modified include files'#000, + '10041_U_File $1 is newer than the one used for creating 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 changed for unit $1'#000+ - '10','046_U_Implementation CRC changed for unit $1'#000+ + '10045_U_Inter','face CRC changed for unit $1'#000+ + '10046_U_Implementation CRC changed for unit $1'#000+ '10047_U_Finished compiling unit $1'#000+ '10048_U_Adding dependency: $1 depends on $2'#000+ '10049_U_No reload, is caller: $1'#000+ '10050_U_No reload, already in second compile: $1'#000+ - '10051_U_Flag for reload: $1'#000+ - '10052_','U_Forced reloading'#000+ + '100','51_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+ - '10058_U_Re-resolving unit $1'#000+ - '10059_U_Skipping ','re-resolving unit $1, still loading used units'#000+ + '10058_U_Re-reso','lving unit $1'#000+ + '10059_U_Skipping re-resolving unit $1, still loading used units'#000+ '10060_U_Unloading resource unit $1 (not needed)'#000+ '10061_E_Unit $1 was compiled using a different whole program optimizat'+ - 'ion feedback input ($2, $3); recompile it without wpo or use the same '+ - 'wpo f','eedback input file for this compilation invocation'#000+ + 'ion feedback input ($2, $3); recompile it wi','thout wpo or use the sam'+ + 'e wpo feedback input file for this compilation invocation'#000+ '10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+ '10063_U_PPU is compiled for another i8086 memory model'#000+ - '10064_U_Loading unit $1 from package $2'#000+ - '10065_F_Internal type "$1','" was not found. Check if you use the corre'+ - 'ct run time library.'#000+ + '10064_U_Loading unit $1 from packa','ge $2'#000+ + '10065_F_Internal type "$1" was not found. Check if you use the correct'+ + ' run time library.'#000+ '10066_F_Internal type "$1" does not look as expected. Check if you use'+ ' the correct run time library.'#000+ - '10067_U_Skipping unit, PPU and compiler have to be both compiled with '+ - 'or wi','thout LLVM support'#000+ + '10067_U_Skipping unit, PPU and compiler have',' to be both compiled wit'+ + 'h or without LLVM support'#000+ '11000_O_$1 [options] [options]'#000+ '11001_W_Only one source file supported, changing source file to compil'+ 'e from "$1" into "$2"'#000+ '11002_W_DEF file can be created only for OS/2'#000+ - '11003_E_Nested response files are not su','pported'#000+ + '11003_E_N','ested response files are not supported'#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 furth','er options from $1'#000+ + '11009_F_Unable to ope','n 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_In options file $1 at line $2 too many #IF(N)DEFs encountered'#000+ - '11014_F_In options file $1 at line $2 unexp','ected #ENDIFs encountered'+ + '11014_F_In o','ptions file $1 at line $2 unexpected #ENDIFs encountered'+ #000+ '11015_F_Open conditional at the end of the options 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+ + '11018_W_You are usi','ng 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+ '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+ - '11022_W_"$1" assembler use forced'#000+ - '11026_T_Reading opti','ons from file $1'#000+ + '11022_W_"$1" assembler ','use forced'#000+ + '11026_T_Reading options from file $1'#000+ '11027_T_Reading options from environment $1'#000+ '11028_D_Handling option "$1"'#000+ '11029_O_*** 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_Int','erpreting firstpass option "$1"'#000+ + '11032_D_Inter','preting option "$1"'#000+ + '11036_D_Interpreting firstpass option "$1"'#000+ '11033_D_Interpreting file option "$1"'#000+ '11034_D_Reading config file "$1"'#000+ '11035_D_Found source file name "$1"'#000+ '11039_E_Unknown codepage "$1"'#000+ '11040_F_Config file $1 is a directory'#000+ - '11041_W_Assembler output selected',' "$1" cannot generate debug info, d'+ + '11','041_W_Assembler output selected "$1" cannot generate debug info, d'+ 'ebugging disabled'#000+ '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+ '11043_F_In options file $1 at line $2 #ELSE directive without #IF(N)DE'+ 'F found'#000+ - '11044_F_Option "$1" is not, or not yet, s','upported on the current tar'+ + '11044_F_Op','tion "$1" is not, or not yet, supported on the current tar'+ 'get platform'#000+ '11045_F_The feature "$1" is not, or not yet, supported on the selected'+ ' target platform'#000+ '11046_N_DWARF debug information cannot be used with smart linking on t'+ - 'his target, switching to static linking'#000+ - '110','47_W_Option "$1" is ignored for the current target platform.'#000+ + 'his target, ','switching to static linking'#000+ + '11047_W_Option "$1" is ignored for the current target platform.'#000+ '11048_W_Disabling external debug information because it is unsupported'+ ' for the selected target/debug format combination.'#000+ - '11049_N_DWARF debug information cannot be used with smart ','linking wi'+ + '11049_N_DWARF debug informa','tion cannot be used with smart linking wi'+ 'th external assembler, disabling static library creation.'#000+ '11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+ 'e: $1'#000+ - '11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+ - 'ble: $1'#000+ - '11052_E_You must u','se a FPU type of VFPV2, VFPV3 or VFPV3_D16 when us'+ - 'ing the EABIHF ABI target'#000+ + '11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment ','var'+ + 'iable: $1'#000+ + '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+ + 'g the EABIHF ABI target'#000+ '11053_W_The selected debug format is not supported on the current targ'+ 'et, not changing the current setting'#000+ - '11054_E_Argument to "$1" is missing'#000+ - '11055_E_Malformed par','ameter: $1'#000+ + '11054_E_Argument to "$1" i','s missing'#000+ + '11055_E_Malformed parameter: $1'#000+ '11056_W_Smart linking requires external linker'#000+ '11057_E_Creating .COM files is not supported in the current memory mod'+ 'el. Only the tiny memory model supports making .COM files.'#000+ - '11058_W_Experimental CheckPointer option not enabled ','because it is i'+ + '11058_W_Experimental C','heckPointer option not enabled because it is i'+ 'ncomptatible with -Ur option.'#000+ '11059_E_Unsupported target architecture -P$1, invoke the "fpc" compile'+ 'r driver instead.'#000+ '11060_E_Feature switches are only supported while compiling the system'+ - ' unit.'#000+ - '11061_N_The selected debug for','mat is not supported by the internal l'+ - 'inker, switching to external linking'#000+ + ' unit.',#000+ + '11061_N_The selected debug format is not supported by the internal lin'+ + 'ker, switching to external linking'#000+ '11062_E_You can not use both options ($1) ($2) at same time.'#000+ '12000_F_Cannot open whole program optimization feedback file "$1"'#000+ - '12001_D_Processing whole program optim','ization information in wpo fee'+ + '12001_D','_Processing whole program optimization information in wpo fee'+ 'dback file "$1"'#000+ '12002_D_Finished processing the whole program optimization information'+ ' in wpo feedback file "$1"'#000+ - '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+ - 'ck file'#000+ - '12004_W_No handler ','registered for whole program optimization section'+ - ' "$2" at line $1 of wpo feedback file, ignoring'#000+ + '12003_E_Expected section header, but got "$2" at line $1 of wpo fe','ed'+ + 'back file'#000+ + '12004_W_No handler registered for whole program optimization section "'+ + '$2" at line $1 of wpo feedback file, ignoring'#000+ '12005_D_Found whole program optimization section "$1" with information'+ ' about "$2"'#000+ - '12006_F_The selected whole program optimizations require a pr','eviousl'+ + '12006_F_The selected whole pro','gram optimizations require a previousl'+ 'y generated feedback file (use -Fw to specify)'#000+ '12007_E_No collected information necessary to perform "$1" whole progr'+ 'am optimization found'#000+ - '12008_F_Specify a whole program optimization feedback file to store th'+ - 'e generated info in (usi','ng -FW)'#000+ + '12008_F_Specify a whole program optimization feedback file to s','tore '+ + 'the generated info in (using -FW)'#000+ '12009_E_Not generating any whole program optimization information, yet'+ ' a feedback file was specified (using -FW)'#000+ '12010_E_Not performing any whole program optimizations, yet an input f'+ - 'eedback file was specified (using -Fw)'#000+ - '12011_D_Sk','ipping whole program optimization section "$1", because no'+ - 't needed by the requested optimizations'#000+ + 'eedback file was s','pecified (using -Fw)'#000+ + '12011_D_Skipping whole program optimization section "$1", because not '+ + 'needed by the requested optimizations'#000+ '12012_W_Overriding previously read information for "$1" from feedback '+ - 'input file using information in section "$2"'#000+ - '12013_E_Cannot extract symb','ol liveness information from program when'+ - ' stripping symbols, use -Xs-'#000+ + 'input file using information in section "','$2"'#000+ + '12013_E_Cannot extract symbol liveness information from program when s'+ + 'tripping symbols, use -Xs-'#000+ '12014_E_Cannot extract symbol liveness information from program when w'+ 'hen not linking'#000+ - '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+ - 'n from linked ','program'#000+ + '12015_F_Cannot find "$1" or "$2" to extract symbol li','veness informat'+ + 'ion from linked program'#000+ '12016_E_Error during reading symbol liveness information produced by "'+ '$1"'#000+ '12017_F_Error executing "$1" (exitcode: $2) to extract symbol informat'+ 'ion from linked program'#000+ - '12018_E_Collection of symbol liveness information can only help ','when'+ + '12018_E_Collection of symbol live','ness information can only help when'+ ' using smart linking, use -CX -XX'#000+ '12019_E_Cannot create specified whole program optimisation feedback fi'+ 'le "$1"'#000+ '13001_F_Can'#039't find package $1'#000+ '13002_U_PCP file for package $1 found'#000+ - '13003_E_Duplicate package $1'#000+ - '13004_E_Unit $1 can not be ','part of a package'#000+ + '13003_E_Duplicate package',' $1'#000+ + '13004_E_Unit $1 can not be part of a package'#000+ '13005_N_Unit $1 is implicitely imported into package $2'#000+ '13006_F_Failed to create PCP file $2 for package $1'#000+ '13007_F_Failed to read PCP file for package $1'#000+ '13008_T_PCP loading $1'#000+ - '13009_U_PCP Name: $1'#000+ + '13009_U_PCP N','ame: $1'#000+ '13010_U_PCP Flags: $1'#000+ - '1','3011_U_PCP Crc: $1'#000+ + '13011_U_PCP Crc: $1'#000+ '13012_U_PCP Time: $1'#000+ '13013_U_PCP File too short'#000+ '13014_U_PCP Invalid Header (no PCP at the begin)'#000+ '13015_U_PCP Invalid Version $1'#000+ '13016_U_PCP is compiled for another processor'#000+ - '13017_U_PCP is compiled for another target'#000+ - '1301','8_U_Writing $1'#000+ + '13017_U_PCP is c','ompiled for another target'#000+ + '13018_U_Writing $1'#000+ '13019_F_Can'#039't Write PCP-File'#000+ '13020_F_Error reading PCP-File'#000+ '13021_F_Unexpected end of PCP-File'#000+ '13022_F_Invalid PCP-File entry: $1'#000+ - '13023_U_Trying to use a unit which was compiled with a different FPU m'+ - 'ode'#000+ - '13024_T_Packagesearch',': $1'#000+ + '13023_U_Trying to use a unit which was compiled with a different',' FPU'+ + ' mode'#000+ + '13024_T_Packagesearch: $1'#000+ '13025_U_Required package $1'#000+ '13026_U_Contained unit $1'#000+ '13027_E_Unit $1 is already contained in package $2'#000+ '13028_W_Unit $1 is imported from indirectly required package $2'#000+ '13029_U_PPL filename $1'#000+ - '11023_Free Pascal Compiler version $FPCFUL','LVERSION [$FPCDATE] for $F'+ + '11023_Free ','Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $F'+ 'PCCPU'#010+ 'Copyright (c) 1993-2020 by Florian Klaempfl and others'#000+ '11024_Free Pascal Compiler version $FPCVERSION'#010+ @@ -1398,7 +1400,7 @@ const msgtxt : array[0..000362,1..240] of char=( 'Compiler date : $FPCDATE'#010+ 'Compiler CPU target: $FPCCPU'#010+ #010+ - 'Supported targets (targets marked with '#039'{*}'#039' ','are under devel'+ + 'Supported targ','ets (targets marked with '#039'{*}'#039' are under devel'+ 'opment):'#010+ ' $OSTARGETS'#010+ #010+ @@ -1411,8 +1413,8 @@ const msgtxt : array[0..000362,1..240] of char=( 'Supported inline assembler modes:'#010+ ' $ASMMODES'#010+ #010+ - 'Recognized compiler and RTL features:'#010+ - ' $FEATURE','LIST'#010+ + 'Recognized compil','er and RTL features:'#010+ + ' $FEATURELIST'#010+ #010+ 'Recognized modeswitches:'#010+ ' $MODESWITCHES'#010+ @@ -1427,351 +1429,353 @@ const msgtxt : array[0..000362,1..240] of char=( ' All'#010+ ' $WPOPTIMIZATIONS'#010+ #010+ - 'Code Generation Backend'#010+ - ' $CODEGENERATIONBACKE','ND'#010+ + 'Code Generation',' Backend'#010+ + ' $CODEGENERATIONBACKEND'#010+ #010+ 'Supported Microcontroller types:$\n $CONTROLLERTYPES$\n'#010+ 'This program comes under the GNU General Public Licence'#010+ 'For more information read COPYING.v2'#010+ #010+ 'Please report bugs in our bug tracker on:'#010+ - ' https://bugs.freepascal.or','g'#010+ + ' ',' https://bugs.freepascal.org'#010+ #010+ 'More information may be found on our WWW pages (including directions'#010+ 'for mailing lists useful for asking questions or discussing potential'#010+ 'new features, etc.):'#010+ ' https://www.freepascal.org'#000+ - '11025_F*0*_Only options valid for',' the default or selected platform a'+ + '11','025_F*0*_Only options valid for the default or selected platform a'+ 're listed.'#010+ '**0*_Put + after a boolean switch option to enable it, - to disable it'+ '.'#010+ '**1@_Read compiler options from in addition to the default fpc.'+ 'cfg'#010+ - '**1a_The compiler does not delete the generated ','assembler file'#010+ + '**1a_The compiler',' does not delete the generated assembler file'#010+ '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older tha'+ 'n 2.25 (Windows, NativeNT)'#010+ '**2al_List sourcecode lines in assembler file'#010+ - '**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+ - '**2ao_Add an extra option',' to external assembler call (ignored for in'+ - 'ternal)'#010+ + '**2an_List node info in assembler file (-dEXTDEBUG comp','iler)'#010+ + '**2ao_Add an extra option to external assembler call (ignored for inte'+ + 'rnal)'#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+ - '**1A','_Output format:'#010+ + '**2at_List temp allocation/release',' info in assembler file'#010+ + '**1A_Output format:'#010+ '**2Adefault_Use default assembler'#010+ '3*2Aas_Assemble using GNU AS'#010+ '3*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+ '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+ - '8*2Anasm_Assemble using Nasm'#010+ - '8*2Anasmobj_Assembl','e using Nasm'#010+ + '8*2Anasm_Assemble',' using Nasm'#010+ + '8*2Anasmobj_Assemble using Nasm'#010+ '3*2Anasm_Assemble using Nasm'#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*2Anasmdarwin_macho3','2 object file using Nasm (experimental)'#010+ + '3*2Anasmwdosx_Win32/WDOSX object file u','sing Nasm'#010+ + '3*2Anasmdarwin_macho32 object file using Nasm (experimental)'#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*2Aelf_ELF (Linux)',' using internal writer'#010+ + '3*2Acoff_COFF (Go32v2) using internal writer'#010+ '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+ '3*2Ayasm_Assemble using Yasm (experimental)'#010+ '4*2Aas_Assemble using GNU AS'#010+ '4*2Agas_Assemble using GNU GAS'#010+ - '4*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS',#010+ + '4*2Aas-darwin_Assem','ble Darwin Mach-O using GNU GAS'#010+ '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+ '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+ '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+ '4*2Ayasm_Assemble using Yasm (experimental)'#010+ - '4*2Anasm_Assemble using Nasm (experimental)'#010+ - '4*2A','nasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+ + '4*2Anasm_Assemble',' using Nasm (experimental)'#010+ + '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+ '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+ #010+ '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+ - 'ental)'#010+ - '6*2Aas_Unix o-file using GNU ','AS'#010+ + 'ental',')'#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+ '6*2Avasm_Use vasm to assemble'#010+ 'A*2Aas_Assemble using GNU AS'#010+ 'P*2Aas_Assemble using GNU AS'#010+ - 'S*2Aas_Assemble using GNU AS'#010+ - 'Z*2Asdcc-sdasz80_Assembl','e using SDCC-SDASZ80'#010+ + 'S*2Aas_Assemble using ','GNU AS'#010+ + 'Z*2Asdcc-sdasz80_Assemble using SDCC-SDASZ80'#010+ 'Z*2Az80asm_Assemble using z80asm'#010+ '**1b_Generate browser info'#010+ '**2bl_Generate local symbol info'#010+ '**1B_Build all modules'#010+ '**1C_Code generation options:'#010+ - '**2C3_Turn on ieee error checking for constants'#010+ - '**2Ca_Select ABI; s','ee fpc -i or fpc -ia for possible values'#010+ + '**2C3_Turn on ieee error checking for c','onstants'#010+ + '**2Ca_Select ABI; see fpc -i or fpc -ia for possible values'#010+ '**2Cb_Generate code for a big-endian variant of the target architectur'+ 'e'#010+ '**2Cc_Set default calling convention to '#010+ - '**2CD_Create also dynamic library (not supported)'#010+ - '**2Ce_Compilation with emulate','d floating point opcodes'#010+ + '**2CD_Create also dynamic library (not supported)',#010+ + '**2Ce_Compilation with emulated floating point opcodes'#010+ '**2CE_Generate FPU code which can raise exceptions'#010+ '**2Cf_Select fpu instruction set to use; see fpc -i or fpc -if for '+ 'possible values'#010+ - '**2CF_Minimal floating point constant precision (default, 32, 64)'#010+ - '**2Cg_Gen','erate PIC code'#010+ + '**2CF_Minimal floating point constant precis','ion (default, 32, 64)'+ + #010+ + '**2Cg_Generate PIC code'#010+ '**2Ch[,m]_ bytes min heap size (between 1023 and 67107840) and o'+ 'ptionally [m] max heap size'#010+ '**2Ci_IO-checking'#010+ 'A*2CI_Select instruction set on ARM: ARM or THUMB'#010+ - 'L*2Cl_LLVM code generation options'#010+ - 'L*3Clflto_Enable L','ink-time optimisation (needed both when compiling '+ - 'units and programs/libraries)'#010+ + 'L*2Cl_LLVM code genera','tion options'#010+ + 'L*3Clflto_Enable Link-time optimisation (needed both when compiling un'+ + 'its and programs/libraries)'#010+ 'L*3Clfltonosystem_Disable LTO for the system unit (needed with at leas'+ 't Xcode 10.2 and earlier due to linker bugs)'#010+ - 'L*3Clv_LLVM target version: Xcode-10.1, 7.','0, 8.0, .., 10.0'#010+ + 'L*3Clv_LLVM',' target version: Xcode-10.1, 7.0, 8.0, .., 10.0'#010+ '**2Cn_Omit linking stage'#010+ 'P*2CN_Generate nil-pointer checks (AIX-only)'#010+ '**2Co_Check overflow of integer operations'#010+ '**2CO_Check for possible overflow of integer operations'#010+ - '**2Cp_Select instruction set; see fpc -i or fpc -ic',' for possible '+ + '**2Cp_Select instruc','tion set; see fpc -i or fpc -ic for possible '+ 'values'#010+ '**2CP=_ packing settings'#010+ '**3CPPACKSET=_ set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+ 'and 8'#010+ '**3CPPACKENUM=_ enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+ 'L'#010+ - '**3CPPACKRECORD=_ record packing:',' 0 or DEFAULT or NORMAL, 1, '+ + '**3CPPACK','RECORD=_ record packing: 0 or DEFAULT or NORMAL, 1, '+ '2, 4, 8, 16 and 32'#010+ '**2Cr_Range checking'#010+ '**2CR_Verify object method call validity'#010+ '**2Cs_Set stack checking size to '#010+ '**2Ct_Stack checking (for testing only, see manual)'#010+ - '8*2CT_Target-specific code generatio','n options'#010+ + '8*2CT','_Target-specific code generation options'#010+ '3*2CT_Target-specific code generation options'#010+ '4*2CT_Target-specific code generation options'#010+ 'p*2CT_Target-specific code generation options'#010+ 'P*2CT_Target-specific code generation options'#010+ - 'J*2CT_Target-specific code gene','ration options'#010+ + 'J*2','CT_Target-specific code generation options'#010+ 'A*2CT_Target-specific code generation options'#010+ 'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ ' (AIX)'#010+ - 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ - ' (AIX)'#010+ - 'J*3CTautogetterprefix=','X_ Automatically create getters for propertie'+ - 's with prefix X (empty string disables)'#010+ + 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution spe','e'+ + 'd (AIX)'#010+ + 'J*3CTautogetterprefix=X_ Automatically create getters for properties '+ + 'with prefix X (empty string disables)'#010+ 'J*3CTautosetterprefix=X_ Automatically create setters for properties '+ 'with prefix X (empty string disables)'#010+ - '8*3CTcld_ Emit a CLD instructi','on before using the x8'+ + '8*3CTcld_ ',' Emit a CLD instruction before using the x8'+ '6 string instructions'#010+ '3*3CTcld_ Emit a CLD instruction before using the x86 '+ 'string instructions'#010+ '4*3CTcld_ Emit a CLD instruction before using the x86 '+ - 'string instructions'#010+ - '8*3CTfarprocspus','hoddbp_ Increment BP before pushing it in the '+ - 'prologue of far functions'#010+ + 'strin','g instructions'#010+ + '8*3CTfarprocspushoddbp_ Increment BP before pushing it in the pr'+ + 'ologue of far functions'#010+ 'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+ 'de for initializing integer array constants'#010+ - 'J*3CTenumfieldinit_ Initialize enumeration',' fields in construct'+ + 'J*3CTenumfieldini','t_ Initialize enumeration fields in construct'+ 'ors to enumtype(0), after calling inherited constructors'#010+ 'J*3CTinitlocals_ Initialize local variables that trigger a JV'+ - 'M bytecode verification error if used uninitialized (slows down code)'#010+ - 'J*3CTlowercaseprocstart','_ Lowercase the first character of procedure'+ - '/function/method names'#010+ + 'M bytecode verification error if used uninitialized (slows dow','n code'+ + ')'#010+ + 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/f'+ + 'unction/method names'#010+ 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+ 'ble'#010+ 'J*2Cv_Var/out parameter copy-out checking'#010+ - 'A*2CV_Set section threadvar model to '#010+ - '**2CX_Create',' also smartlinked library'#010+ + 'A*2CV_Set section thre','advar model to '#010+ + '**2CX_Create also smartlinked library'#010+ '**1d_Defines the symbol '#010+ '**1D_Generate a DEF file'#010+ '**2DD_Set the date string returned by %DATE% to x, it is not checke'+ 'd for being a valid date string'#010+ - '**2Dd_Set description to '#010+ - '**2DT_Set the time st','ring returned by %TIME% to x, it is not chec'+ - 'ked for being a valid time string'#010+ + '**2Dd_Set description ','to '#010+ + '**2DT_Set the time string returned by %TIME% to x, it is not checke'+ + 'd for being a valid time string'#010+ '**2Dv_Set DLL version to '#010+ '*O2Dw_PM application'#010+ '**1e_Set path to executable'#010+ '**1E_Same as -Cn'#010+ '**1fPIC_Same as -Cg'#010+ - '**1F_Set file names and paths:'#010+ - '**2Fa[,y]_(for a program) load units and [y] before uses is p'+ - 'arsed'#010+ + '**1F_Se','t file names and paths:'#010+ + '**2Fa[,y]_(for a program) load units and [y] before uses is par'+ + 'sed'#010+ '**2Fc_Set input codepage to '#010+ '**2FC_Set RC compiler binary name to '#010+ '**2Fd_Disable the compiler'#039's internal directory cache'#010+ - '**2FD_Set the directory where to sear','ch for compiler utilities'#010+ + '**2FD_','Set the directory where to search for compiler utilities'#010+ '**2Fe_Redirect error output to '#010+ '**2FE_Set exe/unit output path to '#010+ '**2Ff_Add to framework path (Darwin only), or set IDF path to <'+ 'x> (Xtensa-FreeRTOS)'#010+ - '**2FF_Use fpcres as RC to RES compiler inste','ad of windres or gorc'#010+ + '**2FF_Use fpc','res as RC to RES compiler instead of windres or gorc'#010+ '**2Fi_Add to include path'#010+ '**2Fl_Add to library path'#010+ '**2FL_Use as dynamic linker'#010+ '**2Fm_Load unicode conversion table from .txt in the compiler di'+ 'r'#010+ - '**2FM_Set the directory where to search fo','r unicode binary files'#010+ + '**2FM_Set t','he directory where to search for unicode binary files'#010+ '**2FN_Add to list of default unit scopes (namespaces)'#010+ '**2Fo_Add to object path'#010+ '**2Fr_Load error message file '#010+ '**2FR_Set resource (.res) linker to '#010+ - '**2Fu_Add to unit path'#010+ - '**2FU_Set u','nit output path to , overrides -FE'#010+ + '**2Fu_Add ',' to unit path'#010+ + '**2FU_Set unit output path to , overrides -FE'#010+ '**2FW_Store generated whole-program optimization feedback in '#010+ '**2Fw_Load previously stored whole-program optimization feedback fr'+ 'om '#010+ - '*g1g_Generate debug information (default format for targe','t)'#010+ + '*g1g_Generate debug inform','ation (default format for target)'#010+ '*g2gc_Generate checks for pointers (experimental, only available on so'+ 'me targets, might generate false positive)'#010+ '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ - '*g2gl_Use line info unit (show more info with backtraces)'#010+ - '*g','2gm_Generate Microsoft CodeView debug information (experimental)'#010+ + '*g2gl_Use line info unit (sho','w more info with backtraces)'#010+ + '*g2gm_Generate Microsoft CodeView debug information (experimental)'#010+ '*g2go_Set debug information options'#010+ '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+ 'aks gdb < 6.5)'#010+ - '*g3gostabsabsincludes_ Store absolute/full include file pat','hs in Sta'+ + '*g3gostabsabsincludes_ Store',' absolute/full include file paths in Sta'+ 'bs'#010+ '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+ 'ame'#010+ '*g3godwarfcpp_ Simulate C++ debug information in DWARF'#010+ - '*g3godwarfomflinnum_ Generate line number information in OMF LINNUM re'+ - 'cords in MS LINK format in ad','dition to the DWARF debug information ('+ - 'Open Watcom Debugger/Linker compatibility)'#010+ + '*g3godwarfomflinnum_ Generate line number information in OMF LINNUM ','r'+ + 'ecords in MS LINK format in addition to the DWARF debug information (O'+ + 'pen Watcom Debugger/Linker compatibility)'#010+ '*g2gp_Preserve case in stabs symbol names'#010+ '*g2gs_Generate Stabs debug information'#010+ - '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+ - 't'#039' chang','es the trashing value)'#010+ + '*g2gt_Trash local variables (to detect uniniti','alized uses; multiple '+ + #039't'#039' changes the trashing value)'#010+ '*g2gv_Generates programs traceable with Valgrind'#010+ '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+ '*g2gw2_Generate DWARFv2 debug information'#010+ - '*g2gw3_Generate DWARFv3 debug information'#010+ - '*g2gw4_Generate DWARFv4 debu','g information (experimental)'#010+ + '*g2gw3_Generate DWARFv3 debug informati','on'#010+ + '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+ '**1i_Information'#010+ '**2iD_Return compiler date'#010+ '**2iSO_Return compiler OS'#010+ '**2iSP_Return compiler host processor'#010+ '**2iTO_Return target OS'#010+ '**2iTP_Return target processor'#010+ - '**2iV_Return short compiler version'#010+ - '**2iW_Return',' full compiler version'#010+ + '**2iV_Return shor','t compiler version'#010+ + '**2iW_Return full compiler version'#010+ '**2ia_Return list of supported ABI targets'#010+ '**2ib_Return the used code generation backend type'#010+ '**2ic_Return list of supported CPU instruction sets'#010+ - '**2if_Return list of supported FPU instruction sets'#010+ - '**2ii_Return list o','f supported inline assembler modes'#010+ + '**2if_Return list of supported FPU instr','uction sets'#010+ + '**2ii_Return list of supported inline assembler modes'#010+ '**2im_Return list of supported modeswitches'#010+ '**2io_Return list of supported optimizations'#010+ '**2ir_Return list of recognized compiler and RTL features'#010+ - '**2it_Return list of supported targets'#010+ - '**2iu_Return list o','f supported microcontroller types'#010+ + '**2it_Return list of suppor','ted targets'#010+ + '**2iu_Return list of supported microcontroller types'#010+ '**2iw_Return list of supported whole program optimizations'#010+ '**1I_Add to include path'#010+ '**1k_Pass to the linker'#010+ '**1l_Write logo'#010+ - '**1M_Set language mode to / enable modeswitch (see option',' '+ - '-im)'#010+ + '**1M_Set language mode to / en','able modeswitch (see option'+ + ' -im)'#010+ '**2Mfpc_Free Pascal dialect (default)'#010+ '**2Mobjfpc_FPC mode with Object Pascal support'#010+ '**2Mdelphi_Delphi 7 compatibility mode'#010+ '**2Mtp_TP/BP 7.0 compatibility mode'#010+ - '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+ - '**2Miso_ISO 7185 m','ode'#010+ + '**2Mmacpas_Macintosh Pascal dialects compat','ibility mode'#010+ + '**2Miso_ISO 7185 mode'#010+ '**2Mextendedpascal_ISO 10206 mode'#010+ '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+ '**2*_Each mode (as listed above) enables its default set of modeswitch'+ 'es.'#010+ - '**2*_Other modeswitches are disabled and need to be enabled one by an', - 'other.'#010+ + '**2*_Other modeswitches are disabled a','nd need to be enabled one by a'+ + 'nother.'#010+ '**1M-_Disable modeswitch (see option -im)'#010+ '**1n_Do not read the default config files'#010+ '**1o_Change the name of the executable produced to '#010+ '**1O_Optimizations:'#010+ '**2O-_Disable optimizations'#010+ - '**2O1_Level 1 optimizations (quic','k and debugger friendly)'#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+ '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+ - 'pected side effects)'#010+ - '**2Oa=_','Set alignment'#010+ + 'pec','ted side effects)'#010+ + '**2Oa=_Set alignment'#010+ '**2Oo[NO]_Enable or disable optimizations; see fpc -i or fpc -io fo'+ 'r possible values'#010+ '**2Op_Set target cpu for optimizing; see fpc -i or fpc -ic for poss'+ 'ible values'#010+ - '**2OW_Generate whole-program optimization feedback fo','r optimizati'+ + '**2OW_Generate whole-p','rogram optimization feedback for optimizati'+ 'on ; see fpc -i or fpc -iw for possible values'#010+ '**2Ow_Perform whole-program optimization ; see fpc -i or fpc -iw'+ ' for possible values'#010+ '**2Os_Optimize for size rather than speed'#010+ - '**1pg_Generate profile code for gprof (define','s FPC_PROFILE)'#010+ + '**1pg_Generate',' profile code for gprof (defines FPC_PROFILE)'#010+ 'F*1P_Target CPU / compiler related options:'#010+ 'F*2PB_Show default compiler binary'#010+ 'F*2PP_Show default target cpu'#010+ 'F*2P_Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipse'+ - 'l,powerpc,powerpc64,sparc,x86_64)'#010+ - '**1R_A','ssembler reading style:'#010+ + 'l,powerpc,po','werpc64,sparc,x86_64)'#010+ + '**1R_Assembler reading style:'#010+ '**2Rdefault_Use default assembler for target'#010+ '3*2Ratt_Read AT&T style assembler'#010+ '3*2Rintel_Read Intel style assembler'#010+ '4*2Ratt_Read AT&T style assembler'#010+ - '4*2Rintel_Read Intel style assembler'#010+ - '8*2Ratt_Read AT&T style assem','bler'#010+ + '4*2Rintel_Read Intel style assemble','r'#010+ + '8*2Ratt_Read AT&T style assembler'#010+ '8*2Rintel_Read Intel style assembler'#010+ '6*2RMOT_Read Motorola style assembler'#010+ '**1S_Syntax options:'#010+ '**2S2_Same as -Mobjfpc'#010+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+ '**2Sa_Turn on assertions'#010+ - '**2Sd_Same as -Mdelphi'#010+ - '**2Se_Error o','ptions. is a combination of the following:'#010+ + '**2Sd_Sa','me as -Mdelphi'#010+ + '**2Se_Error options. is a combination of the following:'#010+ '**3*_ : Compiler halts after the errors (default is 1)'#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+ - '**2Sf','_Enable certain features in compiler and RTL; see fpc -i or fpc'+ - ' -ir for possible values)'#010+ + '**3*_h : Compil','er also halts after hints'#010+ + '**2Sf_Enable certain features in compiler and RTL; see fpc -i or fpc -'+ + 'ir for possible values)'#010+ '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+ - '**2Sh_Use reference counted strings (ansistring by default) instead of'+ - ' shortstrings'#010+ - '**2Si_Tu','rn on inlining of procedures/functions declared as "inline"'#010+ + '**2Sh_Use reference counted strings (ansistring by default) i','nstead '+ + 'of shortstrings'#010+ + '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+ '**2Sj_Allows typed constants to be writeable (default in all modes)'#010+ '**2Sk_Load fpcylix unit'#010+ '**2SI_Set interface style to '#010+ - '**3SIcom_COM compatible interface (default)'#010+ - '**3SIcor','ba_CORBA compatible interface'#010+ + '**3SIcom_COM compatib','le interface (default)'#010+ + '**3SIcorba_CORBA compatible interface'#010+ '**2sT_Generate script only to link on target'#010+ '**2Sm_Support macros like C (global)'#010+ '**2So_Same as -Mtp'#010+ '**2Sr_Transparent file names in ISO mode'#010+ - '**2Ss_Constructor name must be init (destructor must be done)'#010+ - '**2Sv_','Support vector processing (use CPU vector extensions if availa'+ - 'ble)'#010+ + '**2Ss_Constructor name must be init (','destructor must be done)'#010+ + '**2Sv_Support vector processing (use CPU vector extensions if availabl'+ + 'e)'#010+ '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+ '**2Sy_@ returns a typed pointer, same as $T+'#010+ - '**1s_Do not call assembler and linker'#010+ - '**2sh_Generate s','cript to link on host'#010+ + '**1s_Do not call assemb','ler and linker'#010+ + '**2sh_Generate script to link on host'#010+ '**2st_Generate script to assemble and link on target'#010+ '**2sr_Skip register allocation phase (use with -alr)'#010+ '**1T_Target operating system:'#010+ '3*2Tandroid_Android'#010+ '3*2Taros_AROS'#010+ - '3*2Tbeos_BeOS'#010+ + '3*2Tbeos_BeOS'#010, '3*2Tdarwin_Darwin/Mac OS X'#010+ - '3*2T','embedded_Embedded'#010+ + '3*2Tembedded_Embedded'#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*2Thaiku_Haiku'#010+ - '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tdar'+ - 'win)'#010+ - '3*2Tlinux_Lin','ux'#010+ + '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older ve','rsions: -Td'+ + 'arwin)'#010+ + '3*2Tlinux_Linux'#010+ '3*2Tnativent_Native NT API (experimental)'#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*2Tsymbian_Symbian OS'#010+ + '3*2Tsymbian_Symb','ian OS'#010+ '3*2Tsolaris_Solaris'#010+ - '3*2T','watcom_Watcom compatible DOS extender'#010+ + '3*2Twatcom_Watcom compatible DOS extender'#010+ '3*2Twdosx_WDOSX DOS extender'#010+ '3*2Twin32_Windows 32 Bit'#010+ '3*2Twince_Windows CE'#010+ @@ -1779,8 +1783,8 @@ const msgtxt : array[0..000362,1..240] of char=( '4*2Taros_AROS'#010+ '4*2Tdarwin_Darwin/Mac OS X'#010+ '4*2Tdragonfly_DragonFly BSD'#010+ - '4*2Tembedded_Embedded'#010+ - '4*2Tfreebsd_Free','BSD'#010+ + '4*2Temb','edded_Embedded'#010+ + '4*2Tfreebsd_FreeBSD'#010+ '4*2Thaiku_Haiku'#010+ '4*2Tiphonesim_iPhoneSimulator'#010+ '4*2Tlinux_Linux'#010+ @@ -1789,9 +1793,9 @@ const msgtxt : array[0..000362,1..240] of char=( '4*2Tsolaris_Solaris'#010+ '4*2Twin64_Win64 (64 bit Windows systems)'#010+ '6*2Tamiga_Commodore Amiga'#010+ - '6*2Tatari_Atari ST/STe/TT'#010+ + '6*2Tatari_Atari ST','/STe/TT'#010+ '6*2Tembedded_Embedded'#010+ - '6','*2Tlinux_Linux'#010+ + '6*2Tlinux_Linux'#010+ '6*2Tnetbsd_NetBSD'#010+ '6*2Tmacosclassic_Classic Mac OS'#010+ '6*2Tpalmos_PalmOS'#010+ @@ -1799,9 +1803,9 @@ const msgtxt : array[0..000362,1..240] of char=( '8*2Tembedded_Embedded'#010+ '8*2Tmsdos_MS-DOS (and compatible)'#010+ '8*2Twin16_Windows 16 Bit'#010+ - 'A*2Tandroid_Android'#010+ + 'A*2Tandroid_Androi','d'#010+ 'A*2Taros_AROS'#010+ - 'A*2Tembedded_Em','bedded'#010+ + 'A*2Tembedded_Embedded'#010+ 'A*2Tfreertos_FreeRTOS'#010+ 'A*2Tgba_Game Boy Advance'#010+ 'A*2Tios_iOS'#010+ @@ -1812,9 +1816,9 @@ const msgtxt : array[0..000362,1..240] of char=( 'A*2Tsymbian_Symbian'#010+ 'A*2Twince_Windows CE'#010+ 'a*2Tandroid_Android'#010+ - 'a*2Tdarwin_Darwin/Mac OS X'#010+ + 'a*2Tdarwin','_Darwin/Mac OS X'#010+ 'a*2Tios_iOS'#010+ - 'a*','2Tlinux_Linux'#010+ + 'a*2Tlinux_Linux'#010+ 'a*2Twin64_Windows 64'#010+ 'J*2Tandroid_Android'#010+ 'J*2Tjava_Java'#010+ @@ -1825,8 +1829,8 @@ const msgtxt : array[0..000362,1..240] of char=( 'M*2Tlinux_Linux'#010+ 'P*2Taix_AIX'#010+ 'P*2Tamiga_AmigaOS'#010+ - 'P*2Tdarwin_Darwin/Mac OS X'#010+ - 'P*2Tembedded_Embed','ded'#010+ + 'P*2Tdarwin_Dar','win/Mac OS X'#010+ + 'P*2Tembedded_Embedded'#010+ 'P*2Tlinux_Linux'#010+ 'P*2Tmacosclassic_Classic Mac OS'#010+ 'P*2Tmorphos_MorphOS'#010+ @@ -1837,9 +1841,9 @@ const msgtxt : array[0..000362,1..240] of char=( 'p*2Tembedded_Embedded'#010+ 'p*2Tlinux_Linux'#010+ 'R*2Tlinux_Linux'#010+ - 'R*2Tembedded_Embedded'#010+ + 'R*2Tembedded_E','mbedded'#010+ 'r*2Tlinux_Linux'#010+ - 'r*2Temb','edded_Embedded'#010+ + 'r*2Tembedded_Embedded'#010+ 'S*2Tlinux_Linux'#010+ 'S*2Tsolaris_Solaris'#010+ 's*2Tlinux_Linux'#010+ @@ -1849,157 +1853,157 @@ const msgtxt : array[0..000362,1..240] of char=( 'x*2Tlinux_Linux'#010+ 'Z*2Tembedded_Embedded'#010+ 'Z*2Tzxspectrum_ZX Spectrum'#010+ - 'Z*2Tmsxdos_MSX-DOS'#010+ - '**1u_Undefines the s','ymbol '#010+ + 'Z*2Tmsxdos_','MSX-DOS'#010+ + '**1u_Undefines the symbol '#010+ '**1U_Unit options:'#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_Be verbose. is a combination of the followi','ng letters:'#010+ + '**1v_Be verbose. ','is a combination of the following letters:'#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*_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*_s : Show time stamps q : Show message numbers'#010+ - '**2*_a : Show everything ',' x : Show info about invoked too'+ - 'ls'#010+ + '**2*_s : Show time stamps q : Show message numbers'#010, + '**2*_a : Show everything x : Show info about invoked tools'+ + #010+ '**2*_b : Write file names messages p : Write tree.log with parse tre'+ 'e'#010+ '**2*_ with full path v : Write fpcdebug.txt with'#010+ - '**2*_z : Write output to stderr lots of debugging info',#010+ + '**2*_z : Write output to stderr ',' lots of debugging info'#010+ '**2*_m, : Do not show messages numbered and '#010+ 'F*1V_Append '#039'-'#039' to the used compiler binary name (e.g. f'+ 'or version)'#010+ '**1W_Target-specific options (targets)'#010+ - '3*2WA_Specify native type application (Windows)'#010+ - '4*2WA_Specify nat','ive type application (Windows)'#010+ + '3*2WA_Specify native type applicat','ion (Windows)'#010+ + '4*2WA_Specify native type application (Windows)'#010+ 'A*2WA_Specify native type application (Windows)'#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+ - 'a*2Wb','_Create a bundle instead of a library (Darwin)'#010+ + 'p*2Wb_Create a bundle inst','ead of a library (Darwin)'#010+ + 'a*2Wb_Create a bundle instead of a library (Darwin)'#010+ 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+ '4*2Wb_Create a bundle instead of a library (Darwin)'#010+ '3*2WB_Create a relocatable image (Windows, Symbian)'#010+ - '3*2WB_Set image base to (Windo','ws, Symbian)'#010+ + '3*2WB<','x>_Set image base to (Windows, Symbian)'#010+ '4*2WB_Create a relocatable image (Windows)'#010+ '4*2WB_Set image base to (Windows)'#010+ 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+ 'A*2WB_Set image base to (Windows, Symbian)'#010+ - 'Z*2WB_Set image base to (ZX Spectr','um)'#010+ + 'Z*2WB_S','et image base to (ZX Spectrum)'#010+ '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ '4*2WC_Specify console type application (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 e','xport functions of DLL or EXE (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+ '4*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*2We_Use external resources (Darwin)'#010+ - '4*2We_Use external resources (Darwin)'#010, + '4*2We_U','se external resources (Darwin)'#010+ 'a*2We_Use external resources (Darwin)'#010+ 'A*2We_Use external resources (Darwin)'#010+ 'P*2We_Use external resources (Darwin)'#010+ 'p*2We_Use external resources (Darwin)'#010+ '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+ - '3*2WG_Specify graphic type applic','ation (EMX, OS/2, Windows)'#010+ + '3*','2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ '4*2WG_Specify graphic type application (Windows)'#010+ 'A*2WG_Specify graphic type application (Windows)'#010+ 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+ - '3*2Wi_Use internal resources (Darwin)'#010+ - '4*2Wi_Use internal re','sources (Darwin)'#010+ + '3*2Wi_Use internal resources',' (Darwin)'#010+ + '4*2Wi_Use internal resources (Darwin)'#010+ 'a*2Wi_Use internal resources (Darwin)'#010+ 'A*2Wi_Use internal resources (Darwin)'#010+ 'P*2Wi_Use internal resources (Darwin)'#010+ 'p*2Wi_Use internal resources (Darwin)'#010+ - '3*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '4*2WI_Turn on/','off the usage of import sections (Windows)'#010+ + '3*2WI_Turn on/off the usage of import se','ctions (Windows)'#010+ + '4*2WI_Turn on/off the usage of import sections (Windows)'#010+ 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+ '8*2Wh_Use huge code for units (ignored for models with CODE in a uniqu'+ 'e segment)'#010+ '8*2Wm_Set memory model'#010+ - '8*3WmTiny_Tiny memory model'#010+ - '8*3Wm','Small_Small memory model (default)'#010+ + '8*','3WmTiny_Tiny memory model'#010+ + '8*3WmSmall_Small memory model (default)'#010+ '8*3WmMedium_Medium memory model'#010+ '8*3WmCompact_Compact memory model'#010+ '8*3WmLarge_Large memory model'#010+ '8*3WmHuge_Huge memory model'#010+ - '3*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ - 'n)'#010+ - '4*2WM','_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Dar'+ + '3*2WM_Minimum Mac OS X deployment version: 10.4',', 10.5.1, ... (Dar'+ 'win)'#010+ + '4*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'n)'#010+ 'p*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ 'P*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ - 'n)'#010+ - '3*2WN_Do not generate relocat','ion code, needed for debugging (Windows'+ - ')'#010+ + 'n',')'#010+ + '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2Wp_Specify the controller type; see fpc -i or fpc -iu',' for poss'+ + 'A*2Wp_Specify the control','ler type; see fpc -i or fpc -iu for poss'+ 'ible values'#010+ 'm*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ 'R*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ - 'V*2Wp_Specify the controller type; see fpc -i or fpc -iu',' for poss'+ + 'V*2Wp_Specify the control','ler type; see fpc -i or fpc -iu for poss'+ 'ible values'#010+ 'x*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ '3*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+ - '4*2WP_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+ - 'a','*2WP_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+ + '4*2WP_Minimum iOS deployment version',': 8.0, 8.0.2, ... (iphonesim)'+ + #010+ + 'a*2WP_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+ 'A*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+ '3*2WR_Generate relocation code (Windows)'#010+ - '4*2WR_Generate relocation code (Windows)'#010+ - 'A*2WR_Generate relocation c','ode (Windows)'#010+ + '4*2WR_Generate relocation code (Windo','ws)'#010+ + 'A*2WR_Generate relocation code (Windows)'#010+ '8*2Wt_Set the target executable format'#010+ '8*3Wtexe_Create a DOS .EXE file (default)'#010+ '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+ - 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+ - '6*2WQ_Set executable ','metadata format (Sinclair QL)'#010+ + 'P*2WT_Specify MPW tool type application (Classic M','ac OS)'#010+ + '6*2WQ_Set executable metadata format (Sinclair QL)'#010+ '6*3WQqhdr_Set metadata to QDOS File Header style (default)'#010+ '6*3WQxtcc_Set metadata to XTcc style'#010+ '**2WX_Enable executable stack (Linux)'#010+ '**1X_Executable options:'#010+ - '**2X9_Generate linkerscript for GNU Binutils ld old','er than version 2'+ + '**2X9_Generate linke','rscript for GNU Binutils ld older than version 2'+ '.19.1 (Linux)'#010+ '**2Xa_Generate code which allows to use more than 2 GB static data on '+ '64 Bit targets (Linux)'#010+ '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+ 'ux)'#010+ - '**2Xd_Do not search default library path (','sometimes required for cro'+ + '**2Xd_Do no','t search default library path (sometimes required for cro'+ 'ss-compiling when not using -XR)'#010+ '**2Xe_Use external linker'#010+ '**2Xf_Substitute pthread library name for linking (BSD)'#010+ - '**2Xg_Create debuginfo in a separate file and add a debuglink section '+ - 'to executable'#010+ - '**2XD_Try to li','nk units dynamically (defines FPC_LINK_DYNAMIC)'#010+ + '**2Xg_Create debuginfo in a separate file and add a debuglink sectio','n'+ + ' to executable'#010+ + '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+ '**2Xi_Use internal linker'#010+ 'L*2XlS_LLVM utilties suffix (e.g. -7 in case clang is called clang-'+ '7)'#010+ '**2XLA_Define library substitutions for linking'#010+ - '**2XLO_Define order of library linking'#010+ - '*','*2XLD_Exclude default order of standard libraries'#010+ + '**2XLO_De','fine order of library linking'#010+ + '**2XLD_Exclude default order of standard libraries'#010+ '**2Xm_Generate link map'#010+ '**2XM_Set the name of the '#039'main'#039' program routine (default i'+ 's '#039'main'#039')'#010+ - '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+ - #010+ - 'F*2Xp_First search f','or the compiler binary in the directory '#010+ + '**2Xn_Use target system native linker instead of GNU ld (Solari','s, AI'+ + 'X)'#010+ + 'F*2Xp_First search for the compiler binary in the directory '#010+ '**2XP_Prepend the binutils names with the prefix '#010+ '**2Xr_Set the linker'#039's rlink-path to (needed for cross comp'+ - 'ile, see the ld manual for more information) (BeOS, Linux)'#010+ - '**2XR_Prepen','d to all linker search paths (BeOS, Darwin, FreeB'+ - 'SD, Linux, Mac OS, Solaris)'#010+ + 'ile, see the ld manual for more information',') (BeOS, Linux)'#010+ + '**2XR_Prepend 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+ - '**2Xt_Link with static libraries (-static is pass','ed to linker)'#010+ + '**2Xt_Link with st','atic libraries (-static is passed to linker)'#010+ '**2Xv_Generate table for Virtual Entry calls'#010+ '**2XV_Use VLink as external linker (default on Amiga, MorphOS)'#010+ '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+ '**1*_'#010+ - '**1?_Show this help'#010+ - '**1h_Shows this help',' without waiting' + '**1?_Show',' this help'#010+ + '**1h_Shows this help without waiting' ); From b1a1e6c510c638337612cfc294842fdc5cd09574 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sun, 10 Jan 2021 14:09:22 +0000 Subject: [PATCH 16/19] + test for mantis #38337, already fixed git-svn-id: trunk@48127 - --- .gitattributes | 1 + tests/webtbs/tw38337.pp | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 tests/webtbs/tw38337.pp diff --git a/.gitattributes b/.gitattributes index 0177dd74e3..96fba5029f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18638,6 +18638,7 @@ tests/webtbs/tw38310a.pp svneol=native#text/pascal tests/webtbs/tw38310b.pp svneol=native#text/pascal tests/webtbs/tw38310c.pp svneol=native#text/pascal tests/webtbs/tw3833.pp svneol=native#text/plain +tests/webtbs/tw38337.pp svneol=native#text/plain tests/webtbs/tw3840.pp svneol=native#text/plain tests/webtbs/tw3841.pp svneol=native#text/plain tests/webtbs/tw3863.pp svneol=native#text/plain diff --git a/tests/webtbs/tw38337.pp b/tests/webtbs/tw38337.pp new file mode 100644 index 0000000000..7d461ddfa9 --- /dev/null +++ b/tests/webtbs/tw38337.pp @@ -0,0 +1,20 @@ +program fs; + +{$mode objfpc}{$H+} + +function UTF8Length(const s: string): PtrInt; inline; +begin + Result:=9; +end; + + +var + v1: string; + s: shortstring; + i: Integer; +begin + v1 := '123456789'; + s := v1; + for i := 1 to UTF8Length(s)-8 do begin + end; +end. From b7c519de81316bccb8fb8e71458ef89d8b1f48df Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 10 Jan 2021 14:43:22 +0000 Subject: [PATCH 17/19] Add check for bug fix in bug report 38339 git-svn-id: trunk@48129 - --- .gitattributes | 1 + tests/webtbs/tw38339.pp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 tests/webtbs/tw38339.pp diff --git a/.gitattributes b/.gitattributes index 96fba5029f..62fc84da40 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18639,6 +18639,7 @@ tests/webtbs/tw38310b.pp svneol=native#text/pascal tests/webtbs/tw38310c.pp svneol=native#text/pascal tests/webtbs/tw3833.pp svneol=native#text/plain tests/webtbs/tw38337.pp svneol=native#text/plain +tests/webtbs/tw38339.pp svneol=native#text/plain tests/webtbs/tw3840.pp svneol=native#text/plain tests/webtbs/tw3841.pp svneol=native#text/plain tests/webtbs/tw3863.pp svneol=native#text/plain diff --git a/tests/webtbs/tw38339.pp b/tests/webtbs/tw38339.pp new file mode 100644 index 0000000000..e81db9c9da --- /dev/null +++ b/tests/webtbs/tw38339.pp @@ -0,0 +1,23 @@ +{%OPT=-O3 } +program test48086; +{$mode objfpc}{$H+} +function IsFontNameXLogicalFontDesc(const LongFontName: string): boolean; +var MinusCnt, p: integer; +begin + MinusCnt:=0; + for p:=1 to length(LongFontName) do + if LongFontName[p]='-' then inc(MinusCnt); + Result:=(MinusCnt=14); +end; +var +myfont:string; +begin + myfont:='Myfont--------------'; + if IsFontNameXLogicalFontDesc(myfont) then + writeln('NO ERROR') + else + begin + writeln('Error in count'); + halt(1); + end; +end. From 5c2303a76b1a616d24f9e41679bf61f79020f4c4 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sun, 10 Jan 2021 15:47:27 +0000 Subject: [PATCH 18/19] * add parameter cleanup nodes to the call cleanup block (mantis #38316) git-svn-id: trunk@48130 - --- .gitattributes | 1 + compiler/ncal.pas | 3 +++ tests/webtbs/tw38316.pp | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 tests/webtbs/tw38316.pp diff --git a/.gitattributes b/.gitattributes index 62fc84da40..ea917226ab 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18637,6 +18637,7 @@ tests/webtbs/tw38309.pp svneol=native#text/pascal tests/webtbs/tw38310a.pp svneol=native#text/pascal tests/webtbs/tw38310b.pp svneol=native#text/pascal tests/webtbs/tw38310c.pp svneol=native#text/pascal +tests/webtbs/tw38316.pp svneol=native#text/plain tests/webtbs/tw3833.pp svneol=native#text/plain tests/webtbs/tw38337.pp svneol=native#text/plain tests/webtbs/tw38339.pp svneol=native#text/plain diff --git a/compiler/ncal.pas b/compiler/ncal.pas index c1efca2a37..4bf6208858 100644 --- a/compiler/ncal.pas +++ b/compiler/ncal.pas @@ -928,7 +928,10 @@ implementation reused above) } left:=ctemprefnode.create(paratemp); end; + { add the finish statements to the call cleanup block } addstatement(finistat,ctempdeletenode.create(paratemp)); + aktcallnode.add_done_statement(finiblock); + firstpass(fparainit); firstpass(left); end; diff --git a/tests/webtbs/tw38316.pp b/tests/webtbs/tw38316.pp new file mode 100644 index 0000000000..29cd58b0e7 --- /dev/null +++ b/tests/webtbs/tw38316.pp @@ -0,0 +1,21 @@ +{ %opt=-gh } + +program project1; + +procedure P1(A: array of Integer); +begin +end; + +procedure P2(A: array of Integer); +begin + P1(A); +end; + +var + A: array [0..2] of Integer; + i: Integer; +begin + HaltOnNotReleased := true; + for i := 0 to 10 do + P2(A); +end. From 22864b47e45fa6be6cc7f5c7aae41f4cfc1dc65b Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Sun, 10 Jan 2021 22:56:39 +0000 Subject: [PATCH 19/19] pastojs: record complex only for records with class vars git-svn-id: trunk@48131 - --- packages/pastojs/src/fppas2js.pp | 2 +- packages/pastojs/tests/tcmodules.pas | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index fa6f7901b2..49a62c1f37 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -26464,7 +26464,7 @@ begin if (C=TPasConstructor) or ((aResolver<>nil) and aResolver.IsClassMethod(P) and not aResolver.MethodIsStatic(TPasProcedure(P))) then - IsComplex:=true; // needs $record + ; //IsComplex:=true; // needs $record end; end else if C=TPasAttributes then diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 84165e2168..c46a2aafda 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -12339,12 +12339,20 @@ begin 'type', ' TPoint = record', ' x,y: longint;', + ' class procedure Run(w: longint = 13); static;', ' constructor Create(ax: longint; ay: longint = -1);', ' end;', + 'class procedure tpoint.run(w: longint);', + 'begin', + ' run;', + ' run();', + 'end;', 'constructor tpoint.create(ax,ay: longint);', 'begin', ' x:=ax;', ' self.y:=ay;', + ' run;', + ' run(ax);', 'end;', 'var r: TPoint;', 'begin', @@ -12367,12 +12375,18 @@ begin ' this.y = s.y;', ' return this;', ' };', + ' this.Run = function (w) {', + ' $mod.TPoint.Run(13);', + ' $mod.TPoint.Run(13);', + ' };', ' this.Create = function (ax, ay) {', ' this.x = ax;', ' this.y = ay;', + ' this.Run(13);', + ' this.Run(ax);', ' return this;', ' };', - '}, true);', + '});', 'this.r = this.TPoint.$new();', '']), LinesToStr([ // $mod.$main @@ -23288,7 +23302,7 @@ begin ' $mod.THelper.$new("NewHlp", [3]);', ' return this;', ' };', - '}, true);', + '});', 'rtl.createHelper(this, "THelper", null, function () {', ' this.NewHlp = function (w) {', ' this.Create(2);',