Commit Graph

48979 Commits

Author SHA1 Message Date
joost
8e45ef394e * Avoid that non-existing parts of version-numbers are replaced by zeros
git-svn-id: trunk@34144 -
2016-07-16 17:22:03 +00:00
joost
62d74cfeb2 * Ability to switch mirror/repository
git-svn-id: trunk@34143 -
2016-07-16 17:14:27 +00:00
joost
971c124bc7 * Forgotten to commit in r34141
git-svn-id: trunk@34142 -
2016-07-16 16:49:12 +00:00
joost
ef853991de * Improved error-message
git-svn-id: trunk@34141 -
2016-07-16 16:48:31 +00:00
Jonas Maebe
3c446c8605 * fixed crash when compiling libraries on non-Darwin after r34134
git-svn-id: trunk@34140 -
2016-07-16 14:13:33 +00:00
nickysn
a8ad82b99f + added new unit flag uf_i8086_ss_equals_ds, which indicates memory models with
SS=DS. This is currently redundant (whether SS=DS can be derived by the other
  i8086 memory model unit flags), but in the future will allow adding extra
  memory models, where the SS=DS assumption differs from the current ones.

git-svn-id: trunk@34139 -
2016-07-16 11:16:25 +00:00
nickysn
44e4b638ec + added the uf_package_deny and uf_package_weak unit flags to ppudump
git-svn-id: trunk@34138 -
2016-07-16 10:58:50 +00:00
Jonas Maebe
81b9928e31 * simply disable warnings rather than initialise the function result in
abstract method wrappers using default(resulttype), because "resulttype"
    may not be visible in the current unit. Fixes win32 build after r34127

git-svn-id: trunk@34137 -
2016-07-15 14:35:52 +00:00
Jonas Maebe
687adbefd7 + support for LOC_VOID parameters in llvm for empty records (fixes
tests/test/tnoext4.)

git-svn-id: trunk@34136 -
2016-07-15 14:35:17 +00:00
Jonas Maebe
c05fa52775 * call g_concatcopy() from a_load_ref_ref() if the size of the to be copied
data is big, because large load/store operations result in very slow code
    (and takes forever to generate by llc)

git-svn-id: trunk@34135 -
2016-07-15 14:34:43 +00:00
Jonas Maebe
88a736c95a * moved the code generated for library init/fini to the al_pure_assembler
list, so that the assembler directives generated for Darwin are emitted
    correctly for LLVM
   o extracted the library init code generation from hlcgobj to pmodules so
     we don't add things to another list than what's passed to
     gen_proc_symbol_end(), and so it's done where we generate the init
     routine for libraries (rather then checking for every routine whether
     it's the init routine for a library)
   o removed the llvm-specific gen_proc_symbol_end() because the regular one
     now does the same

git-svn-id: trunk@34134 -
2016-07-15 14:34:11 +00:00
pierre
a0bc21b072 Try to fix unicode support for go32v2 target.
rtl/go32v2/Makefile.fpc: Add character, fpwidestring, unicodedata nd unicodenumtable
                             to list of units.
                             Add rules for these four units.
    rtl/go32v2/Makefile: Regenerated
    packages/rtl-unicode/fpmake.pp: Add go32v2 to CollationOSes set, to also compile unicodeducet unit.

git-svn-id: trunk@34133 -
2016-07-15 10:39:24 +00:00
michael
3e2bb43555 * More changes of Mattias Gaertner to messages system
git-svn-id: trunk@34132 -
2016-07-15 10:13:58 +00:00
Jonas Maebe
c7ea921066 * renamed thlcgobj.g_external_wrapper() into a_jmp_external_name(), and
moved the code to create the procedure start/end etc. that was at the
    call sites of g_external_wrapper() into the new g_external_wrapper()
    -> got rid of the x86-specific code in expunix, and fixed expunix for
    llvm (e.g. tests/test/tlib1{a,b})

git-svn-id: trunk@34131 -
2016-07-14 15:26:40 +00:00
Jonas Maebe
6558d7a521 * no longer store the tprocdef.synthetickind field in ppu files
git-svn-id: trunk@34130 -
2016-07-14 15:26:03 +00:00
Jonas Maebe
2bd2e03309 * no longer use the synthetickind field of a procdef to determine whether
it's an automatically generated getter/setter, but a procoption. This
    way we no longer have to save/restore the synthetickind procdef field
    to/from ppu's. This way we can modify the field also after the interface
    has been parsed without affecting the crc (e.g. when creating wrappers
    for high level targets for routines that are only declared as "external"
    in the implementation)

git-svn-id: trunk@34129 -
2016-07-14 15:25:30 +00:00
Jonas Maebe
f5e4265b1e * "push" zero-sized value parameters for LLVM and JVM, because all parameters
are part of the signature on those platforms (fixes e.g. tbs/tb0408.pp for
    LLVM)

git-svn-id: trunk@34128 -
2016-07-14 15:24:50 +00:00
Jonas Maebe
c0ff55e95a * changed the abstract method wrapper generation from thlcgobj to synthetic
methods. Implementing a fully functional g_external_wrapper() for llvm is
    quite hard, and the regular wrapper method that calls FPC_ABSTRACTERROR can
    in principle be optimized to a plain jump by tail call optimisation on other
    targets (to the extent that this matters, because most of them will be
    smartlinked away, and the ones that are executed will trigger an exception)
   o this means that the synthetic method generation needs to be run for all
     objectdefs on all platforms now, rather than only for Java classes

git-svn-id: trunk@34127 -
2016-07-14 15:24:13 +00:00
Jonas Maebe
c1fd3bc0de * specify the unit from which the routine comes when handling tsk_callthrough
in case the called routine in a global procedure/function (to avoid
    potential symbol hiding issues)

git-svn-id: trunk@34126 -
2016-07-14 15:23:39 +00:00
Jonas Maebe
0311528502 * always write bitpacked typed constant arrays as a multiple of bytes rather
than of their loadsize, because otherwise if they are e.g. part of a record
    they would occupy more space than allowed
   o adapted llvm code to deal with the fact that bitpacked arrays are now
     always arrays of bytes rather than arrays of integers with the same size
     as their loadsize -- this also fixes several type inconsistencies
     detected by llvm

git-svn-id: trunk@34125 -
2016-07-14 15:23:07 +00:00
Jonas Maebe
9b7e7c5298 + support absolute addresses on llvm (fixes tests/webtbs/tw12685 for llvm)
git-svn-id: trunk@34124 -
2016-07-14 15:22:31 +00:00
Jonas Maebe
458ba2efac * unlike other architectures, llvm requires that both operands of shl/shr are
of the same size -> ensure that this is the case for the shifts in
    a_bit_test/set_reg_reg_reg() (fixes tests/tbs/tb0219.pp for llvm)

git-svn-id: trunk@34123 -
2016-07-14 15:21:37 +00:00
Jonas Maebe
b156744b62 * left has been forced into a register of size uopdef a few statements
above, so pass uopdef rather than left.resultdef to a_bit_test_reg_loc_reg()
    (part of fixing tests/tbs/tb0219.pp for llvm)

git-svn-id: trunk@34122 -
2016-07-14 15:20:53 +00:00
Jonas Maebe
31b70ecfd3 * don't perform the automatic insertion of typecasts in case register
allocation hasn't been performed, because then reused "registers"
    could have multiple types

git-svn-id: trunk@34121 -
2016-07-14 15:20:19 +00:00
Jonas Maebe
0cce590982 * encode the result type of functions returning a zero-sized value
using their actual type (array/record) rather than using the
    simplified type (void), so we can also return an actual value and
    assign it to something (void means that nothing is returned and
    cannot be assigned to anything) (completes fixing
    tests/test/tnoext4.pp for llvm)

git-svn-id: trunk@34120 -
2016-07-14 15:19:45 +00:00
Jonas Maebe
2148a20d6a * fixed returning results from functions that have a zero-sized result
(e.g. an empty record): return an "undefined" instance of the result
    type (since it's empty, its contents are irrelevant). Before, we
    returned "void", but that means returning nothing rather than returning
    something empty (part of fixing test/tnoext4 for llvm)

git-svn-id: trunk@34119 -
2016-07-14 15:19:09 +00:00
Jonas Maebe
5541fb3f6d * when converting a pointer-sized entity to a complex procvar in a typed
const builder, it can only initialise the function pointer part of the
    complex procvar -> convert the to-size to an address-only version of
    the complex procvar to avoid us trying to bitcast an address into a
    record containing both the function and self/nestedfp pointer
    (fixes test/tmaclocalprocparam4e for llvm)

git-svn-id: trunk@34118 -
2016-07-14 15:18:35 +00:00
Jonas Maebe
c71bc54785 * when emitting the procedure address part of a complex procvar, type
that address as an "address-only" procvar instead of supposedly
    emitting a complex procvar itself as the address part of that same
    complex procvar type (part of fixing test/tmaclocalprocparam4e.pp
    for llvm)

git-svn-id: trunk@34117 -
2016-07-14 15:18:01 +00:00
Jonas Maebe
cdfe299f23 * encode extended in a dynamic array the same as in regular arrays and
records: as an array of 10 bytes. We handle indexing dynamic arrays
    the same as indexing other arrays, and hence that code expects extended
    to be encoded the same way.

git-svn-id: trunk@34116 -
2016-07-14 15:17:27 +00:00
Jonas Maebe
a821c47252 * converted dynarray range checking to the high level code generator
git-svn-id: trunk@34115 -
2016-07-14 15:16:52 +00:00
michael
2571d3e12e * Patch from Mattias Gaertner to extend error info when generating log messages (LastXYZ properties)
git-svn-id: trunk@34114 -
2016-07-14 14:59:00 +00:00
michael
37effde468 * Patch from Mattias Gaertner to clean up unused resource strings
git-svn-id: trunk@34113 -
2016-07-14 06:50:22 +00:00
pierre
1e58b6d944 Use %skiptarget=$nothread for tests using thread capabilities
git-svn-id: trunk@34105 -
2016-07-13 15:21:23 +00:00
pierre
2b3ef31505 Correct previous commit: %skiptarget needs equal sign
git-svn-id: trunk@34104 -
2016-07-13 15:20:31 +00:00
michael
d40bf3684b * Change to use new charset and charwidth
git-svn-id: trunk@34102 -
2016-07-13 11:52:53 +00:00
michael
cd840816a4 * find cannot be used on unsorted stringlist
git-svn-id: trunk@34101 -
2016-07-12 15:04:06 +00:00
pierre
f8cdabfadb Skip test tw3157 for go32v2 target as it genrates problems on ntvdm.exe under windows
git-svn-id: trunk@34100 -
2016-07-12 14:43:06 +00:00
lacak
ad96eb037d fcl-db: sqldb: introduce connection CodePage (derived from connection CharSet) and supporting routines, which performs f.e. codepage aware parameter binding using connection codepage (charset)
git-svn-id: trunk@34099 -
2016-07-12 09:40:02 +00:00
lacak
d2c53d48e9 fcl-db: base:
- Add new properties for
 TField:
  .AsAnsiString, AsUnicodeString, AsUTF8String
 TParam:
  .AsAnsiString, AsUnicodeString, AsUTF8String
- Add CodePage to TStringField and TMemoField
  (so character fields are now CodePage aware, like AnsiString; default CodePage is CP_ACP=0)

git-svn-id: trunk@34098 -
2016-07-12 07:23:32 +00:00
michael
9115dc2521 * OData and Office365 REST API support
git-svn-id: trunk@34097 -
2016-07-11 14:39:59 +00:00
michael
1606976cfa * Patch from Mattias Gaertner to avoid some non-set function results
git-svn-id: trunk@34096 -
2016-07-11 11:43:36 +00:00
michael
d36e882d1a * Add pg_encoding_to_char, by Laco
git-svn-id: trunk@34095 -
2016-07-11 11:27:03 +00:00
michael
3a97ca02aa * Patch from Laco to add some extra functions to interface
git-svn-id: trunk@34094 -
2016-07-11 11:25:20 +00:00
lacak
0a72573e02 fcl-db: tests: Add support for "CharSet" configuration option (specified in database.ini)
git-svn-id: trunk@34093 -
2016-07-11 07:40:38 +00:00
marco
bc9bcdf1f8 * patch to increase ino and time_t to 64-bit, mantis #30314
git-svn-id: trunk@34091 -
2016-07-09 19:57:22 +00:00
svenbarth
54b6cacf36 Fix for Mantis #30357.
Reset tstoredsymtable.init_final_check_done when a symbol is added or removed as otherwise property getters in a record *before* any managed field would trigger it, thus leading to the record being considered as "non-managed".

git-svn-id: trunk@34088 -
2016-07-08 18:20:47 +00:00
svenbarth
7a5bac9cd3 Rework the interface table of VMTs to get rid of FPC_EMPTYINTF.
Previously we had the following approach:
- classes that implemented interfaces had an interface table
- classes that didn't implement an interface, but inherited from a class that did had a Nil entry
- classes that didn't implement any interface (including their parents) had a reference to FPC_EMPTYINTF (this was to optimize lookups)

Now the approach is as follows:
- classes that implement an interface or have a parent that implements an interface have an interface table; if the class itself doesn't implement an interface then the count will be 0
- classes that don't implement an interface at all (neither them nor their parents) have a Nil interface table

This way FPC_EMPTYINTF can be removed without sacrificing at least the optimization for classes without any interface. For classes that have parents with interfaces there will be a small speed penalty due to an additional lookup for the counter.

git-svn-id: trunk@34087 -
2016-07-08 15:34:55 +00:00
Jonas Maebe
571d053a60 - removed tabstractnormalvarsym.currentregloc: the new location will
always be different from the old location, since we just allocated
    the registers for the new one above. Should the old registers ever
    be needed again for tai_varloc: rr.old/rr.oldhi contains it

git-svn-id: trunk@34086 -
2016-07-08 07:46:51 +00:00
Jonas Maebe
fb0f4394c0 * don't set varsym.localloc anymore in gen_alloc_regvar(): in most cases
initialloc was already set afterwards, now it's also done in the final
    case (and allocating the initial location should be different from
    setting the current location)

git-svn-id: trunk@34085 -
2016-07-08 07:46:48 +00:00
Jonas Maebe
cd5817a689 * also emit a tai_varloc() when regvars are initially assigned
o removed separate writing of the local variable/parameter location from
     psub, as that is now triggered by thise tai_varloc

git-svn-id: trunk@34084 -
2016-07-08 07:46:45 +00:00