Commit Graph

54837 Commits

Author SHA1 Message Date
Jonas Maebe
c9a7afe053 * in constructors, free the temp holding self only after loading the function
result, as self is the function result there (follow up to 40501)

git-svn-id: trunk@40635 -
2018-12-24 22:10:09 +00:00
Jonas Maebe
acf02ab64b * when creating wrappers, add a prefix to parameter names to prevent them
hiding the method name of the wrapped routine
   o also add a few more '&' prefixes to the generated wrapper code to
     prevent issues when keywords are used as identifiers

git-svn-id: trunk@40634 -
2018-12-24 22:10:06 +00:00
Jonas Maebe
377d4e1b58 * make the size parameter of thlcgobj.location_force_mmregscalar() a
var-parameter, as the size sometimes gets changed in this routine and
    high level code generators don't use the location.size but the def

git-svn-id: trunk@40633 -
2018-12-24 22:10:02 +00:00
Jonas Maebe
f3d831b480 * fixed result cgsize of LLVM's second_nothing type conversion node (new
size instead of original size, which can be different in case of going
    from void to something else)

git-svn-id: trunk@40632 -
2018-12-24 22:09:58 +00:00
Jonas Maebe
eb769e3859 * force pointer-based self parameters of inlined routines in temps for LLVM
to ensure that their type gets updated

git-svn-id: trunk@40631 -
2018-12-24 22:09:55 +00:00
Jonas Maebe
3ccc3e329b * prevent calling firstpass multiple times for a node (such as when
transforming inc/dec to an addn/subn in case of range checking) from
    triggering the transformation logic for accessing nested variables
    on LLVM/JVM multiple times
  * also prevent it from triggering errors during inlining, in case a
    parameter to a nested routine gets replaced by a local variable
    from a parent routine (in that case, it does not need to be
    accessed via the parentfpstruct, as we are being inlined in the
    parent) -> don't duplicate the check from pass_typecheck in pass_1,
    but check whether it needs to be accessed via the parentfpstruct
    by verifying that tloadnode.left is assigned (which pass_typecheck
    will ensure if needed)

git-svn-id: trunk@40630 -
2018-12-24 22:09:52 +00:00
Jonas Maebe
dd29088430 * simplify all type conversions for formal constants even for LLVM and JVM
(since these happen at compile time and don't result in generated code,
     they never need extra type conversions in the code)

git-svn-id: trunk@40629 -
2018-12-24 22:09:48 +00:00
Jonas Maebe
b1b559f283 * fixed used resulttype of char-to-shortstring typeconversion in case the
shortstring type is smaler than 255 chars

git-svn-id: trunk@40628 -
2018-12-24 22:09:45 +00:00
Mattias Gaertner
765fdb7641 pastojs: fixed uninitialized result
git-svn-id: trunk@40620 -
2018-12-23 16:34:29 +00:00
pierre
1d7f5fa812 * in lexbase and yaccbase units,
use DirectorySeparator instead of '\' in functions
    path, root and addext.
  * in plex and pyacc programs, for unix,
    try to find installed yyparse.cod using
    path of paramstr(0).

git-svn-id: trunk@40619 -
2018-12-23 16:17:49 +00:00
marco
e156128065 * set version over $I, one less file to edit.
git-svn-id: trunk@40615 -
2018-12-22 16:31:39 +00:00
marco
a5b0531980 * fixed formatting parameter in SWarnRetryDeleteFile
git-svn-id: trunk@40614 -
2018-12-22 15:55:44 +00:00
marco
645b924b0c * ctrl-shift-arrow key definitions for xterm, xfce
git-svn-id: trunk@40611 -
2018-12-22 14:56:20 +00:00
michael
c0e680e277 * Load extension demo by Silvio Clecio
git-svn-id: trunk@40610 -
2018-12-21 23:09:40 +00:00
michael
51995c5cac * Examples for extension
git-svn-id: trunk@40609 -
2018-12-21 23:08:00 +00:00
michael
f5a1fce16f * Contribution by Silvio Clecio to make writing extensions possible
git-svn-id: trunk@40608 -
2018-12-21 23:06:14 +00:00
michael
e2ff02a0f5 * Small optimization: add const to string argument (By Silvio Clecio)
git-svn-id: trunk@40607 -
2018-12-21 22:11:32 +00:00
Jonas Maebe
f87304f5ca * fixed LLVM code generator not taking into account constalignmin/max
settings for typed constants

git-svn-id: trunk@40605 -
2018-12-21 20:57:22 +00:00
Jonas Maebe
4f72edcdd5 + LLVM support for the FMA intrinsics
git-svn-id: trunk@40604 -
2018-12-21 20:57:19 +00:00
Jonas Maebe
1cc995b471 * use ccallnode.createintern() instead of
ccallcnode.createinternfromunit('SYSTEM')

git-svn-id: trunk@40603 -
2018-12-21 20:57:16 +00:00
Jonas Maebe
c55ffa8cc7 * fixed <> comparisons with NaNs (use LLVM "unordered" comparison: succeed
if either operand is a NaN)

git-svn-id: trunk@40602 -
2018-12-21 20:57:12 +00:00
pierre
430ec7bbe4 Try to ix compilation failures in units/fpcunit directory
git-svn-id: trunk@40601 -
2018-12-20 22:39:40 +00:00
pierre
e9e5b05caa Remove Unicode $180E (Mongolian Vowel Separator), as it is not anymore a whitespace character
git-svn-id: trunk@40600 -
2018-12-20 21:30:44 +00:00
Jonas Maebe
3b4011760a * cleaned up blockaddress instruction (add type rather than hardcoding it
in the assembler writer)
  * fixed taking the address of a label in a typed const for llvm (fixes
    tbs/tb0468a)

git-svn-id: trunk@40599 -
2018-12-20 21:22:44 +00:00
Jonas Maebe
c6bb85eae9 * support for compiling the objects unit methods that expect local procedure/
function pointers using {$modeswitch nestedprocvars} functionality, activate
    this for LLVM and also activate that modeswitch for a test that uses this
   o also convert the IDE units to use this functionality
   o requires extra typecasts because implicit type conversions from
     procvar(p: psometype) to procvar(p: pointer) are not supported; on the
     plus side, even those type conversions are checked for validity
   o note: requires {$modeswitch nestedprocvars} in all programs/units
     that rely on this functionality

git-svn-id: trunk@40598 -
2018-12-20 21:22:40 +00:00
Mattias Gaertner
e108d9c5eb pastojs: concat(string1,string2,...)
git-svn-id: trunk@40597 -
2018-12-19 23:18:04 +00:00
Mattias Gaertner
ee61fc2102 fcl-passrc: resolver: concat(string1,string2,...)
git-svn-id: trunk@40596 -
2018-12-19 23:17:52 +00:00
Mattias Gaertner
36f3508614 pastojs: jsvalue:=anonymousfunction
git-svn-id: trunk@40594 -
2018-12-19 21:49:49 +00:00
Mattias Gaertner
b7c1732039 pastojs: less fpc hints, test for conflict of external class and property
git-svn-id: trunk@40593 -
2018-12-18 22:21:13 +00:00
Mattias Gaertner
601c6476ea fcl-js: less hints
git-svn-id: trunk@40592 -
2018-12-18 22:20:12 +00:00
Mattias Gaertner
0043b747c7 fcl-passrc: TPasClassType and TPasRecordType now have common ancestor, resolver: started advancedrecord methods
git-svn-id: trunk@40591 -
2018-12-18 22:19:43 +00:00
yury
883f832263 * Added the tsvn:projectlanguage property to force English spell checker in TortoiseSVN.
git-svn-id: trunk@40587 -
2018-12-18 13:26:35 +00:00
yury
92e579a294 * Improved the comment.
git-svn-id: trunk@40586 -
2018-12-18 13:23:52 +00:00
yury
fdcb12d9f6 * ARM: Remove preindexing and postindexing for LDR in some cases when removing superfluous MOVs. It fixes crash when calling Format() if rtl is compiled with -O3.
git-svn-id: trunk@40585 -
2018-12-18 13:20:40 +00:00
Mattias Gaertner
89e66cd2fc pastojs: fixed tests
git-svn-id: trunk@40584 -
2018-12-17 11:45:35 +00:00
Mattias Gaertner
65fdc04dc3 fcl-passrc: fixed parsing comment in $IFDEF, $IFNDEF, issue #34711
git-svn-id: trunk@40582 -
2018-12-17 08:40:35 +00:00
Mattias Gaertner
eee0074eb4 pas2js: rtl.js set version
git-svn-id: trunk@40580 -
2018-12-16 22:39:31 +00:00
Jonas Maebe
7cc7268635 * fixed dynamic array constants for non-Darwin LLVM platforms
git-svn-id: trunk@40578 -
2018-12-16 20:59:58 +00:00
Jonas Maebe
2330164ee2 + internal sqrt support for LLVM (faster on all platforms, necessary on
platforms that don't have RTL support for it, as the the generic
    fpc_sqrt_real just calls runerror)

git-svn-id: trunk@40575 -
2018-12-16 20:44:41 +00:00
Jonas Maebe
8845f4d1ce * fixed type consistency in handler for array parameters on platforms where
these have to be passed on the caller side (i.e., AArch64)

git-svn-id: trunk@40574 -
2018-12-16 20:44:38 +00:00
Jonas Maebe
ac8411f3cf * pass dynamic array parameters of cdecl routines by value on AArch64
(like on onther platforms)
   o it was passed by reference as a side effect of the fact arrays in C are
     pointers, but a dynamic array already is a pointer

git-svn-id: trunk@40573 -
2018-12-16 20:44:35 +00:00
Jonas Maebe
e69b4d2d9a * replaced some stray cpointerdef.create() calls with cpointerdef.getreusable()
git-svn-id: trunk@40572 -
2018-12-16 20:44:31 +00:00
Jonas Maebe
95171a1e22 * initialise cgpara with valid data for the C-style "array of const" para
(necessary for the LLVM backend)

git-svn-id: trunk@40571 -
2018-12-16 20:44:28 +00:00
Jonas Maebe
820d2f7135 * support OS_32/OS_64 in AArch64 cgsize2subreg() for MM registers (can happen
for records with floating point fields with the LLVM code generator)

git-svn-id: trunk@40570 -
2018-12-16 20:44:24 +00:00
Jonas Maebe
93e39fb0cd * only coerce the type of the leftover bytes of a record if the location
size doesn't match the number of remaining bytes
   o prevents a second "single" field of a record getting interpreted as a
     "cardinal"

git-svn-id: trunk@40569 -
2018-12-16 20:44:21 +00:00
Jonas Maebe
ff002e2664 * set paralocations correctly for LLVM/AArch (must be register-type instead
of parameter-type based)

git-svn-id: trunk@40568 -
2018-12-16 20:44:18 +00:00
Jonas Maebe
6b58185bda * fixed shifval for big endian (bits instead of bytes)
git-svn-id: trunk@40567 -
2018-12-16 20:44:15 +00:00
Jonas Maebe
6e453a1477 * fixed paraloc def when changing the size to OS_32
git-svn-id: trunk@40566 -
2018-12-16 20:44:12 +00:00
Jonas Maebe
97bc58d248 * fixed bug that caused the "sret" argument attribute to never be used (and
a guaranteed internalerror on AArch64/llvm)

git-svn-id: trunk@40565 -
2018-12-16 20:44:09 +00:00
Mattias Gaertner
2e98c7d41b pas2js: set trunk version to 1.3.1
git-svn-id: trunk@40562 -
2018-12-16 19:52:16 +00:00