Jonas Maebe
dacfb1a6ff
* load an objc classrefdef as objc_idtype, as that is also how we type
...
the self parameter in Objective-C class methods
git-svn-id: trunk@32913 -
2016-01-10 17:22:09 +00:00
Jonas Maebe
9e4806f21a
* made Objective-C non-fragile ABI field indexing type safe for LLVM
...
git-svn-id: trunk@32911 -
2016-01-10 17:22:03 +00:00
Jonas Maebe
d0f97a6441
* converted open array range checking to the high level code generator
...
git-svn-id: trunk@32543 -
2015-11-27 14:44:29 +00:00
Jonas Maebe
9dc5f1acb4
* support LOC_(C)SUBSETREG in tcgvecnode.pass_generate_code, can also occur
...
for function results (patch by Do-wan Kim, mantis #29064 )
git-svn-id: trunk@32516 -
2015-11-24 15:03:34 +00:00
Jonas Maebe
56a4051296
* replaced another {$ifdef x86} with a virtual method call (the pointer type
...
of voidpointertype corresponds to the default pointer type)
git-svn-id: trunk@32181 -
2015-10-28 18:25:26 +00:00
yury
432248cbf1
* Removed lot of unused vars.
...
git-svn-id: trunk@31732 -
2015-09-17 12:48:58 +00:00
Jonas Maebe
0fc1fd6ac1
* replaced current_procinfo.currtrue/falselabel with storing the true/false
...
labels of LOC_JUMP in the node's location. This generates some extra jumps
for short circuit boolean and/or-expressions if optimizations are off, but
with optimisations enabled the generated code is the same (except for JVM
because the jump threading optimisation isn't enabled there yet).
git-svn-id: trunk@31431 -
2015-08-27 18:28:57 +00:00
Jonas Maebe
d60f60154a
* fixed the def used to load non-objc loadvmtaddr nodes (for llvm)
...
git-svn-id: trunk@31064 -
2015-06-13 22:48:48 +00:00
Jonas Maebe
3f736f6114
* handle the loading of VMT entries at the node level, so it's done in a
...
type-safe way (for LLVM, and also internal consistency checking between
the VMT as generated in nobj.pas and ncgvmt.pas)
o also converted the VMT validity checking to the node level
git-svn-id: trunk@30950 -
2015-05-31 16:50:47 +00:00
florian
e791f534d2
* fix tcgvecnode.update_reference_reg_packed if OS_INT<>OS_ADDR
...
git-svn-id: trunk@30659 -
2015-04-19 10:34:14 +00:00
Jonas Maebe
61e4a1b811
+ added tasmlist parameter to getintparaloc() (needed for llvm)
...
git-svn-id: trunk@30429 -
2015-04-04 14:29:16 +00:00
Jonas Maebe
bd203a5b57
* synchronised with trunk till r30240
...
git-svn-id: branches/hlcgllvm@30241 -
2015-03-15 19:44:58 +00:00
Károly Balogh
0021ad714f
* fixed some ancient code behind cpu_uses_separate_address_registers define to at least compile again, for some m68k experiment
...
git-svn-id: trunk@30130 -
2015-03-07 22:11:43 +00:00
Jonas Maebe
67b8aceaee
* synchronized with privatetrunk till r30095
...
git-svn-id: branches/hlcgllvm@30101 -
2015-03-05 20:32:15 +00:00
Jonas Maebe
d6de2c03cb
* generic part of r26050 from the hlcgllvm branch: made tcgvecnode hlcg-safe
...
o in particular, add tdef size information to the update_reference*()
methods, and factored out offset adjustments into its own method
o also make sure the passed size to update_reference*() corresponds to the
actual size of the index, as it's no longer guaranteed to be ptruint
since the previous commit
git-svn-id: trunk@29967 -
2015-02-23 22:56:00 +00:00
Jonas Maebe
67c9d60b72
* factored out the check regarding whether the index of a vecn needs to be
...
loaded into a register because of its size
o by default, also allow if the size is the same as OS_ADDR but with a
different sign
git-svn-id: trunk@29827 -
2015-02-23 22:48:08 +00:00
sergei
d4969ca2ee
* Fixed subscripting records of size OS_PAIR on big endian targets and enabled placing such records into registers. Tested and shows no regressions on mips-linux.
...
git-svn-id: trunk@29493 -
2015-01-17 11:30:19 +00:00
sergei
11201164e7
* Fixed type of parameter passed to FPC_CHECKPOINTER after r23325, must be the pointer itself, not what it points to. Was causing IE 200306031 when compiling for i386 with -gc.
...
git-svn-id: trunk@28644 -
2014-09-12 18:50:09 +00:00
Jonas Maebe
7949bebb8d
* synchronised with r28168 of trunk
...
git-svn-id: branches/hlcgllvm@28169 -
2014-07-05 21:30:28 +00:00
florian
417d444376
* do not crash with an internal error if an indexed access is done on a constant pointer node
...
git-svn-id: trunk@27789 -
2014-05-14 17:35:09 +00:00
Jonas Maebe
bacd303208
* synchronized with trunk up to r27758
...
git-svn-id: branches/hlcgllvm@27779 -
2014-05-12 16:12:34 +00:00
nickysn
de1b8cf5d6
* use def_cgsize(parentfpvoidpointertype) instead of OS_ADDR in
...
tcgloadparentfpnode.pass_generate_code (should've been part of r27690)
git-svn-id: trunk@27693 -
2014-04-30 17:37:47 +00:00
nickysn
cb33e51425
* tcgloadparentfpnode.pass_generate_code converted to the high level code
...
generator. This fixes nested access to parentfp in i8086 memory models where
DS<>SS.
git-svn-id: trunk@27690 -
2014-04-29 23:32:22 +00:00
florian
701cdf8ea2
* fix for #25956 : left is not necessarily the array load node when accessing an open array/array of const element
...
git-svn-id: trunk@27487 -
2014-04-06 15:15:16 +00:00
Jonas Maebe
338c064beb
* moved x86-specific tpointerdef functionality to architecture-specific
...
descendants
git-svn-id: trunk@27397 -
2014-03-30 21:04:36 +00:00
nickysn
75f29aacc3
* i8086 far data memory model fixes in tcgsubscriptnode.pass_generate_code
...
git-svn-id: trunk@27340 -
2014-03-29 18:30:32 +00:00
nickysn
409b047b59
* i8086 far data memory model fixes for the handling of dynamic (ansi/wide/
...
unicode) strings and dynarrays in tcgvecnode.pass_generate_code
git-svn-id: trunk@27334 -
2014-03-29 14:39:22 +00:00
nickysn
891ab86254
* fixed ncgutil.gen_load_vmt_register and tcgloadvmtaddrnode.pass_generate_code
...
for i8086 far data memory models by using the high level code generator
git-svn-id: trunk@27326 -
2014-03-28 23:16:14 +00:00
nickysn
e465ab355b
* converted tcgaddrnode.pass_generate_code to use the high level code generator,
...
which makes the i8086 overridden class unnecessary
git-svn-id: trunk@27323 -
2014-03-28 16:19:49 +00:00
Jonas Maebe
73a3f5ced4
* moved ncgutil.maybechangeloadnodereg() to hlcg.maybe_change_load_node_reg()
...
and moved ifdef'd jvm code to overridden method
git-svn-id: trunk@27153 -
2014-03-16 11:24:40 +00:00
Jonas Maebe
46e7caef7d
* converted tcgaddrnode.pass_generate_code to the high level code generator
...
git-svn-id: branches/hlcgllvm@27137 -
2014-03-14 18:22:17 +00:00
Jonas Maebe
81427523ab
* pass a list of (pointers to) the paralocs to hlcgobj.a_call/g_call*, as
...
required for the LLVM support (LLVM parameter support is not yet
included)
* always return the function return loc from a_call*, again as required
for the LLVM support
git-svn-id: branches/hlcgllvm@26992 -
2014-03-06 21:40:57 +00:00
Jonas Maebe
e9268a0a14
* synchronised with trunk up till r26975
...
git-svn-id: branches/hlcgllvm@26976 -
2014-03-06 21:36:58 +00:00
nickysn
2908fa9123
+ added type parentfpvoidpointertype, which is a void pointer with the same size
...
as the hidden parentfp parameter, passed to nested procs. On i8086 it is
always a near pointer, unlike voidpointer (which changes according to the
memory model). This fixes nested procs in i8086 far data memory models.
git-svn-id: trunk@26934 -
2014-03-02 22:55:52 +00:00
florian
cd6f4d4469
* fix tsubscriptnode to handle left.location being an fpu or mm register as well.
...
git-svn-id: trunk@26642 -
2014-02-01 13:08:21 +00:00
florian
546f4a5d46
* force records with LOC_CONSTANT into memory when they are subscripted
...
git-svn-id: trunk@26630 -
2014-01-30 19:44:09 +00:00
florian
1d73f49330
* do not force the index location to a register for vec. nodes if the index is already in a register
...
git-svn-id: trunk@26629 -
2014-01-30 17:34:35 +00:00
Károly Balogh
5e15e4b07d
add basic constant handling to subscript nodes, avoid ie20060521 when building rgobj.pas with -O3/-O4
...
git-svn-id: trunk@26532 -
2014-01-20 12:00:48 +00:00
florian
4d5119bf1c
* fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
...
git-svn-id: trunk@26161 -
2013-12-01 17:02:08 +00:00
Jonas Maebe
25fab5b0b6
+ support for array vecnodes on the llvm target, both for regular and for
...
bitpacked arrays:
o separate the element size from the index when constructing the memory
references, so we can easily use the llvm getelementptr instruction
o handle conversion of s80real values from their array declaration
as array elements to floating point values when loading them
git-svn-id: branches/hlcgllvm@26050 -
2013-11-11 11:16:09 +00:00
Jonas Maebe
b47cc22d66
* separated JVM-specific subscripting code in virtual method
...
git-svn-id: branches/hlcgllvm@26030 -
2013-11-11 11:14:47 +00:00
nickysn
bf07fc077b
* specify AT_DATA in all references to the tobjectdef.vmt_mangledname symbol.
...
This fixes a lot of bugs, related to objects and classes in the i8086 medium
memory model
git-svn-id: trunk@25794 -
2013-10-15 18:56:27 +00:00
florian
963a488ca2
* handle also LOC_CREGISTER/LOC_CMMREGISTER in tcgvecnode.pass_generate_code, resolves #24705
...
git-svn-id: trunk@25039 -
2013-07-04 19:36:28 +00:00
florian
6ab95815d8
* try to optimze (p-/+const)^ by putting const into the offset of the generated reference
...
git-svn-id: trunk@25014 -
2013-06-29 22:20:34 +00:00
florian
be2ab84474
* make actualtargetnode a normal procedure using pointers to node so it can be used also when replacing nodes
...
+ replacenode to replace nodes inline
git-svn-id: trunk@25013 -
2013-06-29 22:20:30 +00:00
nickysn
b0f7786782
+ added support for special versions of near data pointers associated with a x86 segment register. They are supported on all x86 platforms: i8086, i386 and x86_64
...
git-svn-id: trunk@24453 -
2013-05-05 17:22:37 +00:00
nickysn
a5c5b05362
* initial support for system procs that use calling conventions that push left to right on i8086 or i386
...
git-svn-id: branches/i8086@24282 -
2013-04-21 13:26:12 +00:00
florian
77bbb8b5bc
* type casting could force class variables into sub registers, so handle them in subscript nodes as well
...
git-svn-id: trunk@23587 -
2013-02-10 10:06:36 +00:00
Jonas Maebe
69c29a415f
* pass the procdef to getintparaloc instead of only the proccalloption, so
...
that the type of the parameters can be determined automatically
o added compilerproc declarations for all helpers called in the compiler
via their assembler name, so we can look up the corresponding procdef
git-svn-id: trunk@23325 -
2013-01-06 15:05:40 +00:00
florian
c781f21a46
* records with two times the size of a register can be kept in registers
...
git-svn-id: trunk@23313 -
2013-01-04 21:48:41 +00:00