U compiler/nadd.pas
U compiler/ncnv.pas
U compiler/ncon.pas
U compiler/node.pas
A tests/test/tcurrency1.pp
A tests/webtbs/tw33963.pp
A tests/webtbs/tw36179.pp
-- Aufzeichnung der Informationen für Zusammenführung von r43620 in ».«:
U .
git-svn-id: branches/fixes_3_2@43621 -
C compiler/nmat.pas
--- Recording mergeinfo for merge of r43347 into '.':
G .
--- Merging r43436 into '.':
U compiler/defutil.pas
U compiler/nadd.pas
U compiler/ncnv.pas
U compiler/ncon.pas
U compiler/ngtcon.pas
U compiler/ninl.pas
G compiler/nmat.pas
U compiler/nutils.pas
U compiler/pstatmnt.pas
--- Recording mergeinfo for merge of r43436 into '.':
G .
--- Merging r43438 into '.':
A tests/test/tinlrange1.pp
A tests/test/tinlrange2.pp
A tests/test/tinlrange3.pp
--- Recording mergeinfo for merge of r43438 into '.':
G .
--- Merging r43451 into '.':
U tests/test/tinlrange1.pp
--- Recording mergeinfo for merge of r43451 into '.':
G .
--- Merging r43497 into '.':
C compiler/nmat.pas
A tests/test/tinlrange4.pp
--- Recording mergeinfo for merge of r43497 into '.':
G .
git-svn-id: branches/fixes_3_2@43498 -
U compiler/defutil.pas
A tests/webtbf/tw35671.pp
-- Aufzeichnung der Informationen für Zusammenführung von r42272 in ».«:
U .
-- Zusammenführen von r42274 in ».«:
U compiler/cgbase.pas
-- Aufzeichnung der Informationen für Zusammenführung von r42274 in ».«:
G .
-- Zusammenführen von r42275 in ».«:
U compiler/defcmp.pas
C compiler/defutil.pas
U compiler/ncnv.pas
U compiler/ncon.pas
U compiler/ngtcon.pas
U compiler/ninl.pas
U compiler/pstatmnt.pas
A tests/webtbf/tw35753.pp
-- Aufzeichnung der Informationen für Zusammenführung von r42275 in ».«:
G .
git-svn-id: branches/fixes_3_2@43367 -
A tests/webtbs/tw33607.pp
U compiler/aarch64/hlcgcpu.pas
--- Recording mergeinfo for merge of r40512 into '.':
U .
--- Merging r40566 into '.':
U compiler/aarch64/cpupara.pas
--- Recording mergeinfo for merge of r40566 into '.':
G .
--- Merging r40567 into '.':
G compiler/aarch64/cpupara.pas
--- Recording mergeinfo for merge of r40567 into '.':
G .
--- Merging r40573 into '.':
G compiler/aarch64/cpupara.pas
--- Recording mergeinfo for merge of r40573 into '.':
G .
--- Merging r40629 into '.':
U compiler/ncnv.pas
U compiler/llvm/nllvmcnv.pas
--- Recording mergeinfo for merge of r40629 into '.':
G .
--- Merging r40637 into '.':
U compiler/ncon.pas
A tests/webtbs/tw33666.pp
--- Recording mergeinfo for merge of r40637 into '.':
G .
--- Merging r40729 into '.':
U compiler/ncal.pas
U compiler/jvm/njvminl.pas
U compiler/ninl.pas
--- Recording mergeinfo for merge of r40729 into '.':
G .
git-svn-id: branches/fixes_3_2@40735 -
(mantis #25121)
o note that this means that single_const1/single_const2 will now be rounded
to single, instead of staying the at maximum precision
o fixed FahrenheitToCelcius() to handle this change correctly
git-svn-id: trunk@37911 -
pass_generate_code to pass_typecheck, so that it's also used by targets
that override pass_generate_code (fixes webtbs/tw16315b for LLVM)
git-svn-id: trunk@35021 -
o made all (non-abstract) tdef and tsym constructors virtual
o added c*def/c*sym classref types for every (non-abstract) t*def/t*sym
class
o added cpusym unit for every architecture that derives a tcpu*def/tcpu*sym
class from the base classes, and initialises the c*def/c*sym classes with
them. This is done so that the llvm target will be able to derive from
the tcpu*def/sym classes without umpteen ifdefs, and it also means that
the WPO can devirtualise everything because the c* variables are only
initialised with one class type
o replaced all t*def/t*sym constructor calls with c*def/c*sym constructor
calls
git-svn-id: trunk@27361 -
ncon.pas, tstringconstnode:
* buildderefimpl: don't build the deref if we don't need to
* derefimpl: do not try to resolve the deref if it wasn't stored at all
git-svn-id: trunk@25329 -
type with a non-default code page
TODO: ensure that string constants typecasted to ansistring become
ansistrings rather than typeless string constants
git-svn-id: trunk@25207 -
1) tguidconstnode.pass_1 (location is LOC_CREFERENCE)
2) tonnode.pass_1 (generic secondpass references VMT of exception class)
3) Conversion from unsigned to floating-point involves 'magic constant' as GOT-relative data object.
4) Case jumptable address is loaded relative to GOT.
(1) and (2) also provide more accurate setting of pi_needs_got for all targets.
git-svn-id: trunk@23188 -
new ShortString->(Some)String precedence: ShortString, UTF8String, AnsiString, AnsiString(CodePage) and RawByteString, UnicodeString, WideString and other string types
new AnsiString->(Some)String precedence: RawByteString, UTF8String, AnsiString, AnsiString(CodePage), UnicodeString, WideString, ShortString and other string types
The new logic makes UTF8String more preferrable than other AnsiString types, AnsiString more preferrable than other AnsiStrings(codepage) and also makes UnicodeString more preferrable than WideString.
git-svn-id: trunk@21057 -
o support for the new codepage-aware ansistrings in the jvm branch
o empty ansistrings are now always represented by a nil pointer rather than
by an empty string, because an empty string also has a code page which
can confuse code (although this will make ansistrings harder to use
in Java code)
o more string helpers code shared between the general and jvm rtl
o support for indexbyte/word in the jvm rtl (warning: first parameter
is an open array rather than an untyped parameter there, so
indexchar(pcharvar^,10,0) will be equivalent to
indexchar[pcharvar^],10,0) there, which is different from what is
intended; changing it to an untyped parameter wouldn't help though)
o default() support is not yet complete
o calling fpcres is currently broken due to limitations in
sysutils.executeprocess() regarding handling unix quoting and
the compiler using the same command lines for scripts and directly
calling external programs
o compiling the Java compiler currently requires adding ALLOW_WARNINGS=1
to the make command line
git-svn-id: branches/jvmbackend@20887 -
if expr1 has sideeffects. This can't be done safely even in case of
short boolean evaluation, because expr1 may return the inverse the
second time its called (and "0 or 1" is not the same as "0", and
neither is "1 and 0"), based on comment by Michael Karcher
* perform a full string compare when comparing stringconstnodes
before the string constant labels have been generated (patch by
Michael Karcher, mantis #21255)
git-svn-id: trunk@20485 -
- add helper function getansistringcodepage which returns explicitly set codepage or 0 in other case
- add helper function getansistringdef which return a def with explicitly set codepage or cansistringtype in other case
- change tstoreddef.createnai constructor to allow set codepage in constructor
- don't convert string constants to rawbytestring. if string constant already has a codepage - preserve it or convert to ansistring codepage (delphi compatible)
- don't perform string conversion from ansistring to strings with explicitly set codepage (by directive or by compiler switch) and vice versa (delphi compatible)
+ test which covers most of the cases
git-svn-id: trunk@19510 -
defcmp: Address code paged' string type comparison taking care of the code page
ncnv: Remove un-needed code page comparison to CP_UTF8, some fixes regarding shortstrings and wide char/string
ncon: For the case of tstringconstnode.changestringtype (ncon.pas) where the code page are of CP_NONE or 0 no translation is done as :
* CP_NONE is compatible to all
* For 0 the raw bytes are just copied.
My changes:
- change ascii2unicode to allow pass source codepage,
- convert in both cases when source or destination is UTF8
git-svn-id: trunk@19457 -
* Patch from Inoussa:
* defcmp.pas
** ansistring to/from RawByteString are evaluated "te_equal"
** ansistring to UTF8string is evaluated (te_convert_l1,tc_string_2_string)
* ncnv.pas
** "ttypeconvnode.typecheck_char_to_string" : WideChar to AnsiString/ShortString
is possible if the source code page is not utf8
** "ttypeconvnode.typecheck_char_to_char" : WideChar to AnsiChar
is possible if the source code page is not utf8
* ncon.pas
** "tstringconstnode.changestringtype" : Unicode to utf8string bug fix(set the encoding),
constants in the source code with code page set utf8 should be converted back to utf8
* nopt.pas
** "genmultistringadd" : fpc_<stringname>_concat_multi have a new parameter "cp"
to indicate the "DestS" code page if the variable content is nil. This is required
in order not to loose the declared code page.
* pinline.pas
** "inline_setlength" : a new parameter "cp" to indicate the code page if the variable content
is nil. This is required in order not to loose the declared code page.
* ptconst.pas
** "parse_arraydef" : for string const to array of ansichar/widechar conversion check for wide string and
convert if it is required. For char const to array of ansichar/widechar conversion check for wide char and
convert if it is required.
git-svn-id: trunk@19113 -
unicodestring = java.lang.String. The reason this was the default in
the past is that this was the first string type that was implemented,
and without it being the default most code involving string operations
would fail. Now the default strings types are the same as for other
targets
+ new {$modeswitch unicodestrings} directive, that when activated
*together* with {$h+},
1) changes char into an alias for widechar
2) changes string into an alias for unicodestring
3) changes the preferred string evaluation type (in case of uncertainty)
to unicodestring
{$modeswitch unicodestrings} with {$h-} does not change anything at all
regarding the string type (it still changes the char type)
+ new uuchar unit that redefines char as widechar, and which is automatically
included by the compiler if {$modeswitch unicodestrings} is enabled
git-svn-id: branches/jvmbackend@18781 -
o sets of enums are handled as JUEnumSet instances, others as JUBitSet
derivatives (both smallsets and varsets, to make interoperability with
Java easier)
o special handling of set constants: these have to be constructed at run
time. In case of constants in the code, create an internal constsym to
represent them. These and regular constsyms are then aliased by an
another internal staticvarsym that is used to initialise them in the
unit initialisation code.
o until they are constructed at run time, set constants are encoded as
constant Java strings (with the characters containing the set bits)
o hlcgobj conversion of tcginnode.pass_generate_code() for the genjumps
part (that's the only part of the generic code that's used by the JVM
target)
o as far as explicit typecasting support is concerned, currently the
following ones are supported (both from/to setdefs): ordinal types,
enums, any other set types (whose size is the same on native targets)
o enum setdefs also emit signatures
o overloading routines for different ordinal set types, or for different
enum set types, is not supported on the JVM target
git-svn-id: branches/jvmbackend@18662 -
is unicodestring (does *not* change the type of "char" to "unicodechar"
(yet)). Not yet (un)selectable via a directive.
+ systems_default_unicodestring set containing systems on which the
default string type is unicodestring
git-svn-id: branches/jvmbackend@18415 -
o All signed and unsigned ordinal types are made automatable.
o Non-automatable types are rejected when parsing dispinterface declarations.
o Simplified translate_disp_call() a bit.
o translate_disp_call() now supports non-automatable parameters which can be typecasted to automatable ones. UnicodeString is not yet there, though.
o Partially fixes#17904: parameters of Variant Dispatch calls are passed by reference when they can be mapped to a variable.
git-svn-id: trunk@16360 -
they are constants (instead of only on 32 bit systems), and always use the
actual upper/lower bound of the loop variable instead of hardcoding the
bounds of longint (mantis #17646)
git-svn-id: trunk@16213 -
from the unit initialisation sections to the variable declaration sections
to prevent the base units from overriding derived classes (based on patch
by Hans-Peter Dietrich, mantis #17516)
git-svn-id: trunk@16118 -