Jonas Maebe
dd733bd5b5
* changed all size parameters in the temp manager from longint to asizeint
...
git-svn-id: branches/hlcgllvm@28488 -
2014-08-19 20:22:42 +00:00
Jonas Maebe
830952cc3b
* moved creating a reference based on a ttemprecord to a new virtual method
...
called temp_to_ref()
git-svn-id: branches/hlcgllvm@28487 -
2014-08-19 20:22:40 +00:00
Jonas Maebe
0a87133e00
* spelling fix
...
git-svn-id: branches/hlcgllvm@28486 -
2014-08-19 20:22:37 +00:00
Jonas Maebe
344acef9b5
* separate tracking the def of a temp and whether or not it needs to be
...
finalised (for llvm, we always keep track of the def)
git-svn-id: branches/hlcgllvm@28485 -
2014-08-19 20:22:34 +00:00
Jonas Maebe
3b7f43ad77
* renamed (hl)gettemptyped() to (hl)gettempmanaged() to better indicate the
...
meaning
git-svn-id: branches/hlcgllvm@28484 -
2014-08-19 20:22:32 +00:00
Jonas Maebe
979a3d7e1d
* channged gettemptyped() into gethltemp() call, as gettemptyped() is only
...
intended/required for managed types
git-svn-id: branches/hlcgllvm@28483 -
2014-08-19 20:22:29 +00:00
Jonas Maebe
8064adec38
* converted tcgtryexceptnode.pass_generate_code() and
...
tcgtryfinallynode.pass_generate_code() to thlcg
git-svn-id: branches/hlcgllvm@28482 -
2014-08-19 20:22:27 +00:00
Jonas Maebe
a637fbe596
* moved all g_exception_*() methods to hlcgobj and cleaned them up (no more
...
hardcoded registers for the most part)
+ added extra g_exception_discard_reason() that can be called when we only
want to get rid of the currently pushed exception reason, and don't have
to load it (so it can do nothing on platforms that don't use push/pop)
git-svn-id: branches/hlcgllvm@28481 -
2014-08-19 20:22:24 +00:00
Jonas Maebe
9d118567cd
+ support for a_call_reg() on the llvm target (can call simple procvars now)
...
git-svn-id: branches/hlcgllvm@28480 -
2014-08-19 20:22:21 +00:00
Jonas Maebe
3a78f4f580
* use the correct destination def for loading a simple proc2procvar
...
git-svn-id: branches/hlcgllvm@28479 -
2014-08-19 20:22:19 +00:00
Jonas Maebe
bd3f0b3ada
* factored out the common calling code from a_call_name (to reuse in
...
a_call_reg()
git-svn-id: branches/hlcgllvm@28478 -
2014-08-19 20:22:16 +00:00
Jonas Maebe
b6fc2f1542
* don't emit the */pointer suffix for procdefs in llvmaddencodedtype_intern(),
...
so that if a_loadaddr_ref_reg() is used to load the address of a procdef
into a register, the getpointerdef(procdef) won't (wrongly) result in two
*'s
o the previous behaviour was necessary for the tck_simple_procvar2proc
special case that was removed in the previous commit
git-svn-id: branches/hlcgllvm@28477 -
2014-08-19 20:22:13 +00:00
Jonas Maebe
cc4482d6f8
- removed tck_simple_procvar2proc, instead use
...
procdef.getcopyas(procvardef,pc_address_only) as the def if we want to
specify that we're interested in the address of a procedure/procvar of
object
git-svn-id: branches/hlcgllvm@28476 -
2014-08-19 20:22:11 +00:00
Jonas Maebe
904a033ba2
* factored out the code for loading a procvar address, and fixed all used
...
defs
git-svn-id: branches/hlcgllvm@28475 -
2014-08-19 20:22:08 +00:00
Jonas Maebe
63a3ff3c7f
* integrate the functionality to create an address-only procvardef from a
...
procdef into tprocdef.getcopyas()
git-svn-id: branches/hlcgllvm@28474 -
2014-08-19 20:22:06 +00:00
Jonas Maebe
6f01bb56d6
* automatically call calcparas adter creating a procvardef from a procvdef,
...
so it doesn't have to be done explicitly anymore afterwards
git-svn-id: branches/hlcgllvm@28473 -
2014-08-19 20:22:03 +00:00
Jonas Maebe
b36e244e34
* allocate datastructures with new() instead of getmem() so that they get
...
initialised if necessary (such as the targetinfo since the llvmdatalayout
field is an ansistring)
git-svn-id: branches/hlcgllvm@28472 -
2014-08-19 20:22:00 +00:00
Jonas Maebe
6e09fcb744
* fixed ansi/unicodestring constants on non-llvm/darwin platforms after
...
r28327
git-svn-id: branches/hlcgllvm@28404 -
2014-08-13 19:25:45 +00:00
Jonas Maebe
5c75b6dd6b
* synchronised with trunk up till r28402
...
git-svn-id: branches/hlcgllvm@28403 -
2014-08-13 16:04:30 +00:00
marco
4aced18d94
* Patch by Bart Broersma to fix breakage over the years. Though this file is mostly obsolete. Mants #26575
...
git-svn-id: trunk@28402 -
2014-08-13 12:53:40 +00:00
nickysn
21246e973a
* TinyHeapMinBlock defined as sizeof(TTinyHeapBlock), as that's the smallest
...
free block actually supported
git-svn-id: trunk@28401 -
2014-08-13 08:44:53 +00:00
Jonas Maebe
c6ddf0001c
* simplified in_smallset() and removed some old cruft (there's no need
...
anymore to change the register size)
git-svn-id: branches/hlcgllvm@28400 -
2014-08-12 23:17:45 +00:00
Jonas Maebe
4e3f504caa
* don't try to check whether the last parameter of a cdecl function is a
...
varargs parameter if it doesn't have any parameters
git-svn-id: branches/hlcgllvm@28399 -
2014-08-12 23:17:43 +00:00
nickysn
e8c1a44068
* swapped the order of the Next and Size fields in TTinyHeapBlock, because that
...
brings it closer (but still not equal) to the TP7 heap's internal structure
git-svn-id: trunk@28391 -
2014-08-12 20:38:08 +00:00
Jonas Maebe
5e280b3131
* don't convert movs into (the non-existing) ldrs in do_spill_replace()
...
git-svn-id: trunk@28390 -
2014-08-12 20:14:24 +00:00
Jonas Maebe
6aafe209d0
+ llvm second_length() implementation (can't use generic one because of its
...
use of cg.makeregsize())
git-svn-id: branches/hlcgllvm@28389 -
2014-08-12 18:59:19 +00:00
Jonas Maebe
831cc96f48
* give an internalerror when calling cg.makeregsize() for a high level
...
target (explanation why in comments)
git-svn-id: branches/hlcgllvm@28388 -
2014-08-12 18:59:16 +00:00
Jonas Maebe
e8026ad8d3
* fixed the resultdef of length() intrinsic: it's ossinttype rather than
...
sinttype (they're the same on most platforms, except on 8 bit ones where
ossinttype is still 16 bit)
* simplified and documented second_length(), and fixed some (harmless)
errors in the used tcgsize for the resultdef (it had to be OS_SINT
rather than OS_INT -- now it's just def_cgsize(resultdef) so it's
always correct)
git-svn-id: branches/hlcgllvm@28387 -
2014-08-12 18:59:13 +00:00
Jonas Maebe
a2e0f729c6
* use the correct opcode when loading integer pointer constants (such as nil)
...
git-svn-id: branches/hlcgllvm@28386 -
2014-08-12 18:59:10 +00:00
marco
d37a2e65ec
* *result_cint -> *result_int. Mantis #26583 Probably leftover of some int to cint replace.
...
git-svn-id: trunk@28385 -
2014-08-12 09:13:23 +00:00
marco
a03c9fbe8f
* remove strutils from the buildunit mantis #26582
...
git-svn-id: trunk@28384 -
2014-08-12 08:56:13 +00:00
lacak
56e83ce5dd
fcl-db: interbase: fix cases when client library is not loaded dynamically but link statically
...
git-svn-id: trunk@28383 -
2014-08-12 05:13:14 +00:00
florian
499dd078e3
+ automatically insert fma inlines into floating point code if possible and fastmath is activated
...
git-svn-id: trunk@28382 -
2014-08-11 20:50:21 +00:00
sergei
482e61dafa
* MIPS, TCpuAsmOptimizer.GetNextInstructionUsingReg: test that returned item is actually an instruction, because GetNextInstruction can sometimes stop on labels.
...
+ Try to eliminate register move after instructions that load from memory.
git-svn-id: trunk@28380 -
2014-08-10 21:31:13 +00:00
sergei
f1d1fd4f24
* Inserted explicit typecasts in order to prevent range check errors at some places where signed and unsigned types are assigned to each other (mostly MIPS-specific, but one was necessary in generic code).
...
git-svn-id: trunk@28379 -
2014-08-10 21:26:14 +00:00
Jonas Maebe
0867b6e4f8
* added missing {$i fpcdefs.inc}
...
git-svn-id: branches/hlcgllvm@28378 -
2014-08-10 19:40:34 +00:00
Jonas Maebe
9a683a0288
* converted new_exception to hlcgobj
...
o also gets rid of the ifdefs
git-svn-id: branches/hlcgllvm@28377 -
2014-08-10 19:40:32 +00:00
Jonas Maebe
6e1d370417
* split off the texceptaddr declaration into rtl/inc/excepth.inc, so it can
...
be included at the start of the implementation of the system unit (before
the rest of except.inc)
* catch declarations in/loading from the system unit of the TExceptAddr type
* use this type instead of hardcoded size constants in the compiler
* in generic code that is active for all targets, puts its use in a virtual
method since it's only valid for targets using setjmp/longjmp-style
exception handling (and the record is not defined at all in the JVM RTL)
git-svn-id: branches/hlcgllvm@28376 -
2014-08-10 19:40:29 +00:00
Jonas Maebe
4acd43c643
* don't force simple function results in memory
...
o results in simpler code, and more importantly is required for some code
that expects a LOC_REGISTER after calling certain system unit helpers
(e.g. in ncgutil.new_exception)
git-svn-id: branches/hlcgllvm@28375 -
2014-08-10 19:40:26 +00:00
Jonas Maebe
ac4c455991
* handle non-integer/non-record memory destinations in gen_load_cgpara_loc()
...
git-svn-id: branches/hlcgllvm@28374 -
2014-08-10 19:40:24 +00:00
Jonas Maebe
50274f58b6
* ignore get/unget/alloc/dealloc of cpu registers when generating llvm code
...
o there are no cpu registers on the llvm target, but generic code may still
occasionally allocate them via the generic routines in case of e.g. a
hardcoded use of a function return register
git-svn-id: branches/hlcgllvm@28373 -
2014-08-10 19:40:21 +00:00
Jonas Maebe
a64897ddee
+ thlcgobj.a_loadfpu/mm_loc_ref()
...
git-svn-id: branches/hlcgllvm@28372 -
2014-08-10 19:40:19 +00:00
Jonas Maebe
142d5d6d06
- removed get_jumpbuf_size/align, use rec_jmp_buf instead
...
git-svn-id: branches/hlcgllvm@28371 -
2014-08-10 19:40:16 +00:00
Jonas Maebe
0aab46b97f
+ tllvmtypeconvnode.second_int_to_bool() implementation
...
git-svn-id: branches/hlcgllvm@28370 -
2014-08-10 19:40:13 +00:00
Jonas Maebe
f4cdf13d54
* since the generic second_bool_to_bool() calls through to
...
second_int_to_bool() and second_bool_to_int() for certain cases, do the
same for their first_*() variants in first_bool_to_bool() so that the
expectloc is correctly initialised
o since first_int_to_bool can now be called for bool_to_bool to, make
sure we correctly handle is_boolean(left.resultdef) in that case
(integers cast to a smaller boolean type ignore the upper bits,
while with boolean to boolean they are taken into account
git-svn-id: branches/hlcgllvm@28369 -
2014-08-10 19:40:11 +00:00
Jonas Maebe
af98f9e39d
* initialise expectloc for passthrough first_bool_to_int() and
...
first_int_to_bool()
git-svn-id: branches/hlcgllvm@28368 -
2014-08-10 19:40:08 +00:00
Jonas Maebe
53e1d5c26f
* fixed optimised form of a_cmp_const_reg_label(): when inverting the branch, we still
...
have to emit the label we originally allocated for the fallthrough path (otherwise
the branch is not inverted at all, and moreover the caller will also emit the
original target label somewhere so it will be doubly defined)
git-svn-id: branches/hlcgllvm@28367 -
2014-08-10 19:40:06 +00:00
Jonas Maebe
082c81a191
* for now disable internal bsr/bsf for LLVM (can be implemented later
...
based on llvm.ctlz/cttz intrinsics)
git-svn-id: branches/hlcgllvm@28366 -
2014-08-10 19:40:03 +00:00
Jonas Maebe
ac02c92a0d
* disable cg64/cg128 special cases for high level targets
...
git-svn-id: branches/hlcgllvm@28365 -
2014-08-10 19:40:00 +00:00
Jonas Maebe
6ab2c00ac6
* recognise LOC_CREFERENCE in tllvmsubscriptnode.handle_platform_subscript()
...
git-svn-id: branches/hlcgllvm@28364 -
2014-08-10 19:39:58 +00:00