Commit Graph

47187 Commits

Author SHA1 Message Date
Jonas Maebe
2cea723a0d * only write the parts of the unit localsymtables that are actually needed:
the defs and syms (recursively) referred by inline routines and by the WPO
    info
   o defs and syms are no longer added immediately to the module's deflist/
     symlist, even if they are created as "registered". Instead,
     "doregister=true" simply means "add it to the symbol table at the
     top of the symtable stack"
   o normally only when a sym/def is deref'ed, it gets added to the module
     symlist/deflist and defid/symid gets a (unique) value
   o in cases where we use(d) the defid to construct unique names within the
     current module, you now have to call call the tdef.new unique_id_str()
     method. If the def was not yet registered, we will reserve room for it
     in the deflist (to get a unique id), but the defid gets set to a
     negative value computed from its position in the deflist. Should it
     have to be written to the ppu file later on, the defid will be
     modified to the actual position in the deflist. For both values,
     new unique_id_str() will return the same result so that references
     to this def before and after actual registrations are the same (needed
     for the JVM backend, but also a good principle in general)

   Overall: don't directly use symid/defid anymore to get unique identifiers,
     but use tdef.new unique_id_str() instead (if necessary, a similar routine
     for tsym can be added)

   The result is the ppu file size gets reduced significantly after its big
   increase as a result of the high level typed constant builder (which creates
   a lot of defs). The result is even more efficient than before, as other
   unneeded defs/syms from the localsymtables don't get saved/restored anymore
   either.

git-svn-id: trunk@32153 -
2015-10-25 19:22:00 +00:00
Jonas Maebe
d440daf47f * fixed compilation with -Oodfa/-O3
git-svn-id: trunk@32152 -
2015-10-25 19:21:57 +00:00
Jonas Maebe
80902035e0 * moved excepth.inc include from the system unit implementation to interface
so that we can still find the type definitions in it once we don't store
    the entire implementation symtable to the ppu anymore

git-svn-id: trunk@32151 -
2015-10-25 19:21:54 +00:00
Jonas Maebe
8c90941d89 * use the enymsym's name rather converting its symid to a string when creating
the rtti record's fields

git-svn-id: trunk@32150 -
2015-10-25 19:21:51 +00:00
Jonas Maebe
4aa6c95ced * call inherited method from t*sym.buildderef (currently still empty,
but won't stay that way)

git-svn-id: trunk@32149 -
2015-10-25 19:21:48 +00:00
yury
1127689dba * tinterlockedmt test: Reduced the thread count.
git-svn-id: trunk@32148 -
2015-10-25 17:35:36 +00:00
joost
61409cd9a8 * Add include files to fpmake.pp
git-svn-id: trunk@32147 -
2015-10-25 16:29:23 +00:00
joost
74e9510476 * Add include file to fpmake.pp
git-svn-id: trunk@32146 -
2015-10-25 13:12:54 +00:00
joost
26f0d7a8a9 * Add include file to fpmake.pp
git-svn-id: trunk@32145 -
2015-10-25 12:57:22 +00:00
joost
bfd1e4a861 * Add include files to fomake.pp
git-svn-id: trunk@32144 -
2015-10-25 12:00:18 +00:00
joost
7798d639a9 Add include files to fpmake.pp
git-svn-id: trunk@32143 -
2015-10-25 11:30:51 +00:00
joost
c0bdce1330 * Fixed problem with search-masks in fpmake.pp-files in subdirectories
git-svn-id: trunk@32142 -
2015-10-24 22:09:06 +00:00
nickysn
1491d9655c + fixed the emitting of non-nil far and huge pointer constptrs in typed
constants on i8086

git-svn-id: trunk@32141 -
2015-10-24 20:25:49 +00:00
marcus
2f83eeba39 AROS: shortname in system description to uppercase (usual form)
git-svn-id: trunk@32140 -
2015-10-24 09:01:05 +00:00
joost
18f37f783d * Add include file to fpmake.pp
git-svn-id: trunk@32139 -
2015-10-23 20:26:41 +00:00
joost
7c41b9dbf6 * Add include file to fpmake.pp
git-svn-id: trunk@32138 -
2015-10-23 20:20:53 +00:00
lacak
e4369ba51b fcl-db: implement CompareBookmarks in Delphi compatible way.
"value less than 0 if Bookmark1 is less than Bookmark2, 0 if the bookmarks are identical, and a value greater than 0 if Bookmark1 is greater than Bookmark2."
Also FPC documentation: "It returns a negative value if Bookmark1 is located before Bookmark2, zero if they refer to the same record, and a positive value if the second bookmark appears before the first bookmark."
Special case is if one of bookmarks is nil:
 nil, "not nil" returns  1
 "not nil", nil returns -1
Bug #28730

git-svn-id: trunk@32131 -
2015-10-23 08:57:23 +00:00
joost
fa1eacb387 * Add include-files to fpmake.pp
git-svn-id: trunk@32129 -
2015-10-22 20:33:35 +00:00
joost
4e1e8777a1 * Add include-files to fpmake.pp
git-svn-id: trunk@32128 -
2015-10-22 19:48:07 +00:00
joost
5439ceab06 * Add include-files to fpmake.pp
git-svn-id: trunk@32127 -
2015-10-22 19:27:28 +00:00
joost
b37995cbfa * Add include-files to fpmake.pp
git-svn-id: trunk@32126 -
2015-10-22 19:10:09 +00:00
florian
0ffe6157a8 * cast hsym with the correct type, should resolve issue #28862
git-svn-id: trunk@32125 -
2015-10-22 19:07:31 +00:00
joost
ad28a21b45 * Add gdbver_nogdb.inc to fpmake.inc
git-svn-id: trunk@32124 -
2015-10-22 17:19:14 +00:00
joost
6926ae8cae * Fixed some dependencies in fpmake.pp
git-svn-id: trunk@32123 -
2015-10-22 17:08:13 +00:00
nickysn
863daace35 + implemented correct simplification of far pointer comparison of two pointer const nodes
git-svn-id: trunk@32122 -
2015-10-22 14:07:45 +00:00
joost
7ce5b39e23 * Added chmobjinstconst.inc to fpmake.pp
git-svn-id: trunk@32121 -
2015-10-21 22:38:26 +00:00
joost
9969da8aa9 * Added some include files to fpmake.pp
git-svn-id: trunk@32120 -
2015-10-21 21:51:30 +00:00
joost
c3c2fa1ede * Added aspelltypes.inc to fpmake.pp
git-svn-id: trunk@32119 -
2015-10-21 21:31:03 +00:00
joost
502eee8f80 * Fixed building fpmkunit with tar-support, but without zstream
git-svn-id: trunk@32118 -
2015-10-21 21:17:13 +00:00
nickysn
b0130c008d + show the full segment:offset value of far and huge pointer const nodes in the node tree generated by -vp
git-svn-id: trunk@32117 -
2015-10-21 16:53:41 +00:00
nickysn
e325cf1126 * fixed internconsts with two arguments. This allows compile time evaluation of ptr(const,const) on i8086 and i386.
git-svn-id: trunk@32116 -
2015-10-21 16:00:12 +00:00
yury
6537b99ac3 * i386: Fixed detection of a peephole optimization using CMOV.
git-svn-id: trunk@32115 -
2015-10-21 15:59:12 +00:00
yury
5771073e0b * Fixed general peephole optimization of conditional jumps after r30446. It has been broken, since r30446 had added some IsJumpToLabel() checks, which tests for unconditional jump, but the optimization code expects also conditional jumps.
- Renamed IsJumpToLabel() to IsJumpToLabelUncond() to avoid confusions.
  - Added IsJumpToLabel() to check for any jump to a label.
  - Added comments.

git-svn-id: trunk@32114 -
2015-10-21 15:35:54 +00:00
nickysn
3d2919acae + added an i8086 asm optimized implementation of fpc_pchar_length
git-svn-id: trunk@32113 -
2015-10-21 13:21:04 +00:00
yury
35ff024f03 * mips: Fixed internal error 2014061703 when optimization are enabled.
git-svn-id: trunk@32112 -
2015-10-21 12:14:49 +00:00
yury
4ae1d23909 * tinterlockedmt test: Increased timeout.
git-svn-id: trunk@32111 -
2015-10-21 09:02:16 +00:00
nickysn
520f7226aa + added test for i8086 inline asm far and near indirect jmps as well
git-svn-id: trunk@32110 -
2015-10-21 01:26:15 +00:00
nickysn
2fbcdaf7d5 * fix typo
git-svn-id: trunk@32109 -
2015-10-21 01:22:23 +00:00
nickysn
bdf719c4df * updated comment to inform that 'call far reg' is not a valid x86 instruction
at all, and not just that we don't expect it

git-svn-id: trunk@32108 -
2015-10-21 01:19:23 +00:00
nickysn
c5aa64bc2c + added an i8086 inline asm test for the indirect near and far call instructions
git-svn-id: trunk@32107 -
2015-10-21 01:07:00 +00:00
nickysn
09218c88aa + optimizations in tcg8086.g_flags2reg for the case where the carry flag or the
inverted carry flag is converted to int, using shorter branchless code and
  the adc/rcl/sbb instructions

git-svn-id: trunk@32106 -
2015-10-20 23:22:32 +00:00
michael
71a6138a17 * Patch from Silvio Clecio to update fpmake targets and properties
git-svn-id: trunk@32105 -
2015-10-20 21:13:36 +00:00
michael
4f649f34d0 * Patch from Silvio Clecio to update to 0.9.43 headers
git-svn-id: trunk@32104 -
2015-10-20 21:12:09 +00:00
nickysn
8eceb73dd4 * also use an 8-bit zero constant for string comparisons with the empty string.
This avoids the unnecessary 32-bit comparison on 16-bit and 8-bit CPUs

git-svn-id: trunk@32103 -
2015-10-20 15:50:02 +00:00
Jonas Maebe
9437d0e4d8 * Linux/AArch64 must also copy value parameters passed by reference on the
caller side, as this is an AArch64 ABI requirement (unrelated to Darwin).
    Fixes webtbs/tw3523 compiled with optimisations on Linux/AArch64

git-svn-id: trunk@32102 -
2015-10-20 12:58:53 +00:00
yury
9bece502a0 * tinterlockedmt test: Reworked test for InterlockedCompareExchange to be more robust.
git-svn-id: trunk@32101 -
2015-10-20 12:43:52 +00:00
Jeppe Johansen
eadd93dbae Most if not all instructions for thumb use only 2 operand rw forms. Changed get_oper_type to match that. It was previously creating bad spilling.
git-svn-id: trunk@32100 -
2015-10-20 03:45:22 +00:00
nickysn
a20428f246 * when doing a string comparison that calls an rtl helper, compare the function
result with an 8-bit zero constant (which will be expanded to the native
  integer size by the comparison node), instead of 32-bit zero. This avoids the
  unnecessary 32-bit comparison on 16-bit and 8-bit cpus.

git-svn-id: trunk@32099 -
2015-10-20 01:22:01 +00:00
nickysn
db7b743139 * yet another longint replaced with objpasint in fpc_shortstr_compare_equal
git-svn-id: trunk@32098 -
2015-10-19 16:53:40 +00:00
nickysn
b561b3c2ba * use objpasint (generates better code on 16-bit and 8-bit cpus) instead of
longint in several generic shortstr helpers

git-svn-id: trunk@32097 -
2015-10-19 16:36:12 +00:00