Commit Graph

21257 Commits

Author SHA1 Message Date
florian
7855b3cf1b * relax formula for max. nodes to inline
git-svn-id: trunk@39763 -
2018-09-16 19:15:30 +00:00
florian
49e7e5f512 * support aitconst_*bit_unaligned in the intel assembler writer, resolves #34222
git-svn-id: trunk@39761 -
2018-09-16 15:27:03 +00:00
florian
ee338fc709 * patch by Karl-Michael Schindler to update the german messages files, resolves #34218
git-svn-id: trunk@39760 -
2018-09-16 15:13:04 +00:00
florian
a21397e356 + based on a patch by Laksen, optimize (v>=x) and (v<=y) into (v-x)<(y-x)
git-svn-id: trunk@39759 -
2018-09-16 13:09:36 +00:00
florian
64ad48e89e * forgotten part of r39750
git-svn-id: trunk@39752 -
2018-09-13 20:20:40 +00:00
florian
800ce23499 * fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons
git-svn-id: trunk@39750 -
2018-09-12 20:33:18 +00:00
pierre
d46536817c Disable overflow for UDIVX ans SDIVX 64-bit instructions
git-svn-id: trunk@39731 -
2018-09-11 08:00:54 +00:00
svenbarth
cb8f6f637c * fix big endian targets by using an explicit assignment with typecast instead of an absolute variable
git-svn-id: trunk@39728 -
2018-09-10 21:12:29 +00:00
Jeppe Johansen
4b227de02e Add ORN instruction for Thumb2.
git-svn-id: trunk@39714 -
2018-09-08 12:10:51 +00:00
svenbarth
92cce05f5f * as a workaround for some compiler bug introduced during 3.1.1 the freeing of the management operator offset entry lists is moved to a nested procedure as that does not trigger the bug (even with -O2 or -O3)
git-svn-id: trunk@39711 -
2018-09-04 20:20:07 +00:00
svenbarth
ba08bdc9b1 * increase PPU version after the addition of the field to keep track of management operators (don't seperately to help merging)
git-svn-id: trunk@39710 -
2018-09-03 18:00:30 +00:00
svenbarth
600ed6701e + keep track whether a structured type has fields with management operators (or fields that in turn have fields with management operators and so on) and store that in the PPU to speed up compilation again
* adjusted PPUdump for this

git-svn-id: trunk@39709 -
2018-09-03 18:00:27 +00:00
svenbarth
46ef16ac11 * generate an error if the type parameters of a generic routine's definition does not match with its interface or forward declaration
+ added tests

git-svn-id: trunk@39703 -
2018-09-02 16:20:29 +00:00
svenbarth
50323043c1 * generate an error if the type parameters of the record, object or class do not match with its declaration
+ added test

git-svn-id: trunk@39702 -
2018-09-02 16:20:25 +00:00
svenbarth
03a036c6cb * regenerate msg*.inc after adding messages for mismatching generic declarations
git-svn-id: trunk@39701 -
2018-09-02 16:20:22 +00:00
svenbarth
cfe75ca0fd + add messages to use when generic types of a definition do not match with its declaration
git-svn-id: trunk@39700 -
2018-09-02 16:20:18 +00:00
svenbarth
70ae0a2dc9 + add a comment to the destructor of tsymtable so that others (and maybe me a well) will hopefully see that the destructor of that class is not completely trivial!
git-svn-id: trunk@39694 -
2018-08-31 19:16:48 +00:00
svenbarth
072699d38a * protect the destructors of tabstractrecordsymtable and twithsymtable against executing when called with a refcount > 1 (this fixes Mantis #34210)
+ added simplified test

git-svn-id: trunk@39693 -
2018-08-31 19:16:45 +00:00
svenbarth
10886d8cef * fix for Mantis #34206: when specializing nested routines of a generic routine we don't need access to their genericdef (which isn't available anyway in other units when loading from PPU) as their definition is completely contained in the token stream
+ added simplified test for the problem

git-svn-id: trunk@39692 -
2018-08-31 16:11:05 +00:00
svenbarth
a076677336 * instead of a flags field generate a table with all Initialize operators of all fields (nested or not, parent class or not) for class types; objects and records don't use this (yet)
git-svn-id: trunk@39690 -
2018-08-29 19:21:35 +00:00
svenbarth
21e7ddaac7 + add method to retrieve a list of management operator/field offset pairs for a specific management operator inside a structured type (no matter how deeply nested they are)
git-svn-id: trunk@39689 -
2018-08-29 19:21:31 +00:00
svenbarth
ecc02f3fdb * always search in the current module as well as its symtables are be popped already in case of RTTI generation
git-svn-id: trunk@39688 -
2018-08-29 19:21:28 +00:00
svenbarth
190716ac0e * move getrecorddef and gettabledef from TVMTWritter to symdef as they might be used from the RTTI as well
git-svn-id: trunk@39687 -
2018-08-29 19:21:23 +00:00
svenbarth
2e1327b6b2 * use pooled constant references for the parameter locations as more often than not they're equal between multiple methdos (e.g. the Self argument is always the same)
* using this the TypInfo unit can navigate interface methods and VMT method parameters much more quickly as the latter have a constant size now

git-svn-id: trunk@39686 -
2018-08-29 19:20:31 +00:00
svenbarth
029ec93df6 * use pooled constant references for the names of VMT methods in the RTTI
git-svn-id: trunk@39685 -
2018-08-29 19:20:27 +00:00
svenbarth
228d3252cc * use pooled constant references for the parameter names of VMT methods in the RTTI
git-svn-id: trunk@39684 -
2018-08-29 19:20:24 +00:00
svenbarth
8bf3661f7f + add a method to emit a reference to a pooled shortstring constant (aka one per unit); very useful for new RTTI tables to avoid poluting the binary with string constants
git-svn-id: trunk@39683 -
2018-08-29 19:20:20 +00:00
marco
98f00acb06 * trunk to 3.3.1
git-svn-id: trunk@39635 -
2018-08-18 15:47:44 +00:00
florian
ea32ddd5b2 * avoid overflows of execution weight
git-svn-id: trunk@39623 -
2018-08-16 20:45:36 +00:00
florian
75251913b1 * properly pass execution weight in SetExecutionWeight
git-svn-id: trunk@39622 -
2018-08-16 20:45:36 +00:00
marco
dd52e79089 * two comment spelling fixes. Mantis #34092 & #34097
git-svn-id: trunk@39593 -
2018-08-08 08:39:20 +00:00
pierre
ada8891d9e Also allow clang assembler for powerpc64-darwin target
git-svn-id: trunk@39580 -
2018-08-06 16:13:05 +00:00
svenbarth
3d740f13e4 * ensure that the data of the temp node is freed correctly in case of an error (the error might be non-fatal in case of a generic passing an untyped type to Write/Read)
git-svn-id: trunk@39566 -
2018-08-04 08:37:07 +00:00
svenbarth
781303c0d8 * ensure that the file parameter for the Read/Write family of intrinsics is (and can be) freed in tinlinenode.handle_read_write()
git-svn-id: trunk@39565 -
2018-08-04 08:37:01 +00:00
svenbarth
473a028523 - the freegenericparams variable is no longer required as it's always true whenever consume_proc_name is called anyway
git-svn-id: trunk@39562 -
2018-08-03 20:24:23 +00:00
svenbarth
32db846289 * free the list containing the generic parameters as after calling insert_generic_parameter_types() it's no longer required (though this means that the condition handling generictypelist instead needs to be adjusted)
git-svn-id: trunk@39561 -
2018-08-03 20:24:19 +00:00
svenbarth
c1cfd87b56 * the call node takes ownership of the specialization context, so free it in the destructor
git-svn-id: trunk@39560 -
2018-08-03 20:24:15 +00:00
svenbarth
0aee319fdb * do_member_read() takes ownership of the specialization context, so Nil it after the call
git-svn-id: trunk@39559 -
2018-08-03 20:24:10 +00:00
svenbarth
0ba14c7ad8 * fix memory leak when freeing a temp delete node: also call the inherited destructor so that e.g. tnode.optinfo is freed.
git-svn-id: trunk@39558 -
2018-08-03 20:24:05 +00:00
svenbarth
32c307e9ce * fix for Mantis #34021: if one of the two operators is an array constructor try to use an operator overload for that first before converting it to a set
+ added tests

git-svn-id: trunk@39554 -
2018-08-03 15:24:59 +00:00
pierre
29d524e7e6 Remove abolute path for native linker, ld is in directory /usr/ccs/bin in Oracle Solaris 10 8/11
git-svn-id: trunk@39541 -
2018-08-01 06:44:26 +00:00
nickysn
42432d4ef3 * use sizeuinttype, instead of ptruinttype for the indexdef conversion in
tcgvecnode.pass_generate_code. This avoids a meaningless conversion to 32-bit
  (and using the cwd instruction) on i8086 in the far data memory models.

git-svn-id: trunk@39472 -
2018-07-19 15:27:14 +00:00
michael
f6867cbd63 * Patch by Cyrax to allow creating map file on linux (bug ID 33982)
git-svn-id: trunk@39449 -
2018-07-14 08:12:38 +00:00
florian
93c5eae528 * accept dereferences in generics definitions, resolves #33700 properly
git-svn-id: trunk@39447 -
2018-07-13 21:00:33 +00:00
florian
52846df241 * fixed condition in getbestreal
git-svn-id: trunk@39446 -
2018-07-13 19:53:47 +00:00
florian
0c6cf12fbf + support for the directive $EXCESSPRECISION
git-svn-id: trunk@39443 -
2018-07-12 21:39:50 +00:00
Jeppe Johansen
3e2be29030 Make sure to align at the end of the .text, in case .data bytes will be placed there in flash.
git-svn-id: trunk@39442 -
2018-07-12 18:52:19 +00:00
nickysn
9272bf59b2 + added x86 (i8086, i386 and x86_64) intrinsics fpc_x86_get_cs/ss/ds/es/fs/gs
for getting the value of x86 segment registers

git-svn-id: trunk@39433 -
2018-07-11 14:19:40 +00:00
florian
d4c65cdac4 * better register de-allocation after CWD/CWB
git-svn-id: trunk@39413 -
2018-07-07 21:38:42 +00:00
florian
4f580f7878 + add missing exit as mentioned by J. Gareth Moreton in #33754
git-svn-id: trunk@39408 -
2018-07-07 14:53:56 +00:00