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
Jonas Maebe
1a0ffbc82b
* fixed llvm compiler compilation with -O3/-Oodfa
...
git-svn-id: branches/debug_eh@40590 -
2018-12-18 21:13:56 +00:00
Jonas Maebe
752a28a41d
* enabled more optimization flags for llvm
...
git-svn-id: branches/debug_eh@40589 -
2018-12-18 21:13:52 +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
Jonas Maebe
24c49301e3
* synchronised with trunk till r40578
...
git-svn-id: branches/debug_eh@40579 -
2018-12-16 21:00:49 +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
f26ac9026e
* enable LLVM support Linux/AArch64
...
o also put the regular function result before the partfpstruct parameter
git-svn-id: branches/debug_eh@40577 -
2018-12-16 20:46:44 +00:00
Jonas Maebe
b41cd1eb6a
* synchronised with trunk till r40575
...
git-svn-id: branches/debug_eh@40576 -
2018-12-16 20:45:55 +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
Jonas Maebe
52fec8a94a
* when optimising subsetreg moves for aarch64, take into account the fact
...
that the subsetreg itself can be 32 or 64 bit (mantis #33607 )
git-svn-id: trunk@40512 -
2018-12-09 14:46:52 +00:00
Jonas Maebe
440026bb25
* synchronised with trunk till r40503
...
git-svn-id: branches/debug_eh@40504 -
2018-12-08 15:33:36 +00:00
Jonas Maebe
32a51d7b62
* add nocapture and dereferenceable/dereferenceable_or_null decorators to
...
parameters for llvm where appropriate
git-svn-id: trunk@40503 -
2018-12-08 15:31:54 +00:00
Jonas Maebe
51502874af
* emit temp lifetime information for llvm
...
o also allow freeing temps in the middle of a routine for llvm (we won't
reuse them, but it results in better lifetime information)
git-svn-id: trunk@40502 -
2018-12-08 15:31:51 +00:00
Jonas Maebe
3b7efb5123
* only free the temp holding the function result after we've loaded it into
...
the function return register (so we won't load from an already freed
temp once we emit lifetime info for temps on LLVM)
git-svn-id: trunk@40501 -
2018-12-08 15:31:48 +00:00
Jonas Maebe
8a4947dba2
* don't do anything in thlcgllvm.allocallcpuregisters() like in
...
deallocallcpuregisters()
git-svn-id: trunk@40499 -
2018-12-08 15:31:41 +00:00
yury
ad269dedd4
* If ds_dwarf_cpp (C++ emulation) is enabled, add DW_AT_linkage_name attribute for methods.
...
LLDB uses it to display fully qualified method names. Add a simple C++ mangled name without params to achieve at least "Class::Method()" instead of just "Method" in LLDB.
git-svn-id: trunk@40498 -
2018-12-07 20:55:50 +00:00
yury
f0d42db82d
* When ds_dwarf_cpp option is enabled, use dwarf2 implementation of strings debug info. It makes LLDB happy.
...
git-svn-id: trunk@40492 -
2018-12-07 16:14:02 +00:00
Jonas Maebe
9630eb7ce9
* synchronised with trunk till r40466
...
git-svn-id: branches/debug_eh@40467 -
2018-12-04 19:54:31 +00:00
Jonas Maebe
122d0d36d6
+ volatile() expression that marks an expression as volatile
...
* disable matching volatile references in the assembler optimisers, so they
can't be removed (more conservative than needed, but better than removing
too many)
o the CSE optimiser will ignore them by default, because they're an unknown
inline node for it
* also removed no longer used fpc_in_move_x and fpc_in_fillchar_x inline node
identifiers from rtl/inc/innr.inc, and placed fpc_in_unaligned_x at the
right place
git-svn-id: trunk@40465 -
2018-12-04 19:53:20 +00:00
Jonas Maebe
b7da7cd654
* ensure the generic version of tcgshlshrnode gets used for llvm
...
git-svn-id: trunk@40464 -
2018-12-04 19:53:16 +00:00
Jonas Maebe
2109612fa3
- disable cs_opt_use_load_modify_store because for llvm because it is
...
apparently buggy as far as type information is concerned, and it also
results in tons of spilling
git-svn-id: trunk@40463 -
2018-12-04 19:53:13 +00:00
florian
eeadf618b8
+ abi tag for i386
...
* arm abi tag moved into pascal file
git-svn-id: trunk@40454 -
2018-12-02 22:56:12 +00:00
Károly Balogh
6629e72d79
m68k: reinstate the inc/dec tempregister type hack again in an isolated way (it was removed in r40385, as it was breaking llvm target)
...
git-svn-id: trunk@40453 -
2018-12-02 18:54:04 +00:00
Jonas Maebe
cec839ab30
- removed the -(m)stack-alignment parameter, as it prevents stack-realignment
...
by llc (so avx code crashes on targets wich 16 byte stack alignment --
which is all of them)
git-svn-id: branches/debug_eh@40445 -
2018-12-01 23:08:48 +00:00
Jonas Maebe
60488c3c06
* synchronised with trunk till r40443
...
git-svn-id: branches/debug_eh@40444 -
2018-12-01 23:08:18 +00:00
Jonas Maebe
e8512d19b5
* set constalignmax to the same value as varalignmax for all targets where
...
constalignmax was lower (which does not make sense)
git-svn-id: trunk@40443 -
2018-12-01 23:07:09 +00:00
Jonas Maebe
95d79296bd
* fixed alignment of tfiledef (same as corresponding file recorddef)
...
* cap set alignment to sizeof(aint)
git-svn-id: trunk@40442 -
2018-12-01 23:07:05 +00:00
Jonas Maebe
eb742bcacc
* pass on the value of -CfXXX to llc/clang for x86-64
...
git-svn-id: branches/debug_eh@40438 -
2018-12-01 20:30:46 +00:00
Jonas Maebe
c0ce94528f
* use Dwarf-EH for Linux/x86-64 when using the LLVM code generator
...
git-svn-id: branches/debug_eh@40436 -
2018-12-01 20:30:40 +00:00
Jonas Maebe
37ae70f925
* pass --eh-frame-hdr to the linker on Linux when using Dwarf-based EH, as
...
libgcc's unwinder does not work without it
git-svn-id: branches/debug_eh@40435 -
2018-12-01 20:30:37 +00:00
Jonas Maebe
a1db586c81
* define CPULLVM for compilers with an llvm-based code generator (in addition
...
to the regular CPUXXX define for the target architecture)
git-svn-id: branches/debug_eh@40434 -
2018-12-01 20:30:34 +00:00
Jonas Maebe
68ce5dc91f
* register static symbols references from assembly code as "used" so that LLVM won't
...
remove them if there are no references from regular code
git-svn-id: branches/debug_eh@40432 -
2018-12-01 20:30:27 +00:00
Jonas Maebe
85702dd263
+ added support for clang as an assembler for llvm IR
...
* adapted string used for macOS/iOS version in triple in llvm IR files to
what clang expects (always a single digit patch version)
git-svn-id: branches/debug_eh@40431 -
2018-12-01 20:30:24 +00:00
pierre
67fe756642
Regenerate msgid and msgtxt include files after commit 40422
...
git-svn-id: trunk@40425 -
2018-12-01 16:18:58 +00:00
marco
b60cbf3329
* systematically capitalize first word of errormsg/sentence, patch by J. Gareth Moreton, mantis 34618
...
git-svn-id: trunk@40422 -
2018-11-30 11:21:50 +00:00
Jonas Maebe
758a8dd34a
* fixed dwarf debug info after r40398 (mantis #34622 )
...
git-svn-id: trunk@40421 -
2018-11-29 23:21:15 +00:00
Jonas Maebe
645a4da831
- removed "-enable-fp-mad" llc option, as it's not supported for all versions
...
git-svn-id: branches/debug_eh@40420 -
2018-11-29 21:50:18 +00:00
Jonas Maebe
df0a126064
* abstracted rest of the generic exception handling code through the
...
texceptionstatehandler class + llvm overrides
+ added FPC_DummyPotentialRaise routine that gets called at the begin and end
of try-blocks to be able to catch hardware exceptions to a limited extent
with LLVM
git-svn-id: branches/debug_eh@40418 -
2018-11-29 21:31:40 +00:00
Jonas Maebe
7ffd5fc90b
* handle explicit reraise for llvm specifically, as it needs to unwind to
...
the parent exception frame (-> pop current exception label, invoke/call
reraise, push current exception label again)
git-svn-id: branches/debug_eh@40417 -
2018-11-29 21:31:37 +00:00
Jonas Maebe
03013cf2e1
* make ttryfinallynode inherit from ttertiary node so it has a "third" node
...
member. This one will be used by the LLVM descendent to keep a copy of
the finally code, as it must use a separate version for the code that
gets executed when an exception is caught and when no exception happens
git-svn-id: branches/debug_eh@40416 -
2018-11-29 21:31:34 +00:00
Jonas Maebe
2f8fcf7819
+ new tf_use_psabieh target flag to indicate a target uses PSABI/Dwarf EH
...
o use this flag to set the personality routine of a function if it uses
exception handlinga
o also define FPC_USE_PSABIEH if this target flag is set
o set this target flag for darwin/x86-64 if the compiler is compiled with
-dllvm
git-svn-id: branches/debug_eh@40415 -
2018-11-29 21:31:30 +00:00
Jonas Maebe
fceb34dbd5
* converted tllvmpara contents from tlocation to toper, so we can also
...
store tai in them
+ support for direct symbol parameters to llvm routines (without first
loading them into register)
o needed to pass such symbols to llvm intrinsics
git-svn-id: branches/debug_eh@40414 -
2018-11-29 21:31:27 +00:00
Jonas Maebe
d363acbe77
* when inserting a reference to an external procdef, also process its
...
parameter types in case it hasn't been called (because in that case
the defs of those parameters won't have been used and hence they
won't have been recorded for writing either)
git-svn-id: branches/debug_eh@40413 -
2018-11-29 21:31:24 +00:00
Jonas Maebe
ae65f88f62
* add support for la_catch in spilling_get_reg_type (it will never need
...
spilling, but we may need the type to insert bitcasts)
* load the la_catch symbol operand with loadref instead of loadsymbol,
as the latter sets refaddr_full and with llvm we use that to indicated
symbol names of named registers rather than data symbols (which in turn
prevents it from being processed for inserting bitcasts if necessary)
git-svn-id: branches/debug_eh@40412 -
2018-11-29 21:31:21 +00:00
Jonas Maebe
ce7579bd50
+ added "cleanup" landing pad opcode
...
git-svn-id: branches/debug_eh@40411 -
2018-11-29 21:31:18 +00:00
Jonas Maebe
4cd6f59bc3
* changed create_hlcodegen into a procvar, so that we don't have to insert
...
hlcgllvm in the uses clause of every unit that calls create_hlcodegen
o prevents dependency cycles that can cause llvm codegen units to init
before the cpu variants, which is bad since the llvm versions have to
override the cpu variants in their init code (+ added checks in the
init code that they are in fact initialised later)
git-svn-id: branches/debug_eh@40410 -
2018-11-29 21:31:15 +00:00
Jonas Maebe
366bf4294b
* constructor to create extractvalue/extractelement instructions
...
git-svn-id: branches/debug_eh@40409 -
2018-11-29 21:31:11 +00:00
Jonas Maebe
e6c89bbf0a
+ helper to add an extra clause to a landingpad instruction
...
git-svn-id: branches/debug_eh@40408 -
2018-11-29 21:31:08 +00:00
Jonas Maebe
01ddde2283
* refactored jumping out of exception frames so it can be overridden by descendents
...
git-svn-id: branches/debug_eh@40406 -
2018-11-29 21:31:02 +00:00
Jonas Maebe
ccb7231744
* generate invoke instead of call when calling a function in a block that
...
catches exceptions
git-svn-id: branches/debug_eh@40405 -
2018-11-29 21:30:59 +00:00
Jonas Maebe
8711069998
+ constructors to create invoke instructions
...
git-svn-id: branches/debug_eh@40404 -
2018-11-29 21:30:56 +00:00
Jonas Maebe
077d7e8551
* fixed handling of LLVM invoke instruction in the assembler writer and
...
type inference
git-svn-id: branches/debug_eh@40403 -
2018-11-29 21:30:53 +00:00
Jonas Maebe
5b8f7224af
* set the dummy exception handling personality function for functions using
...
exceptions for LLVM (except on Windows targets, since they (will) use
their own kind of exception handling)
o ensure we generate an external function symbol definition for such
personality functions on LLVM
git-svn-id: branches/debug_eh@40402 -
2018-11-29 21:30:49 +00:00
Jonas Maebe
b6efcb9105
+ tllvmexceptionstatehandler that emits LLVM landingpad instructions to be
...
referred by invoke instructions in exception catching blocks
o for now we won't actually use ABI-compliant exception handling, but we
need invoke/landingpad combinations for LLVM's control flow analyses to
correctly handle code involving exception handling
git-svn-id: branches/debug_eh@40401 -
2018-11-29 21:30:46 +00:00
Jonas Maebe
bc8ed77af1
* synchronised with trunk till r40398
...
git-svn-id: branches/debug_eh@40399 -
2018-11-29 21:19:12 +00:00
Jonas Maebe
50ab607676
+ customint torddef type to create arbitraty bit-width integers
...
o use this to handle non-power-of-two-sized parameters for llvm
o no general support in the parser/code generator, so don't expose
git-svn-id: trunk@40398 -
2018-11-29 20:57:08 +00:00
Jonas Maebe
c97c6d3171
* synchronised with trunk till r40386
...
git-svn-id: branches/debug_eh@40387 -
2018-11-28 19:24:42 +00:00
Jonas Maebe
63847f1948
* disable explicitly calling class constructors on the JVM platform, as that
...
is forbidden there
git-svn-id: trunk@40386 -
2018-11-28 19:23:34 +00:00
Jonas Maebe
026d06cffb
- reverted r39188, as this hack removes the type correctness of the
...
instructions, which breaks the llvm code generator. Put such hacks
in CPU-specific overrides
git-svn-id: trunk@40385 -
2018-11-28 19:23:31 +00:00
Jonas Maebe
3a5a69619e
* moved initialisation of parentfpstruct to just behind where the local vars
...
get initialised, so that parameters in this struct are already available
in any wrappers generated for the parent routine (e.g. in case self is
moved to the parentfpstruct in a destructor, which calls beforestruction
in its wrapper)
git-svn-id: trunk@40384 -
2018-11-28 19:23:28 +00:00
Jonas Maebe
97b40dc16d
* fixed dynamic array constants for llvm
...
git-svn-id: trunk@40383 -
2018-11-28 19:23:25 +00:00
Jonas Maebe
413a3599c1
* thlcgobj.g_unreachable() dummy implementation + llvm override
...
git-svn-id: trunk@40382 -
2018-11-28 19:23:22 +00:00
Jonas Maebe
cf235a36a1
* synchronised with trunk till r40378
...
git-svn-id: branches/debug_eh@40379 -
2018-11-27 20:11:49 +00:00
pierre
b64e9700aa
Avoid range errors or overflows on for AVR cpu, when computing address offsets
...
git-svn-id: trunk@40378 -
2018-11-27 10:21:37 +00:00
pierre
044fae62ea
Fix bug report 34605 and add corresponding test
...
git-svn-id: trunk@40377 -
2018-11-27 10:19:36 +00:00
Jonas Maebe
20fea3607c
* pass volatility information to llvm.memcpy
...
git-svn-id: trunk@40376 -
2018-11-26 22:30:05 +00:00
Jonas Maebe
09b6306f02
- removed outdated comment after r40373
...
git-svn-id: trunk@40375 -
2018-11-26 22:30:01 +00:00
Jonas Maebe
f98a9bea3c
* cap the assumed alignment of pass-by-reference parameters to the minimum of
...
their default alignment, the alignment of locals, globals and constants
(so that we don't overestimate the alignment of global normal set
constants to 32 bytes, while the maximum const alignment is often only
8 bytes)
git-svn-id: trunk@40374 -
2018-11-26 22:27:35 +00:00
Jonas Maebe
9a157a7749
* don't overwrite the alignment of locals set by the temp manager with the
...
standard alignment for the type (the maximum alignment for locals may
be less, and it's set correctly by the temp manager)
git-svn-id: trunk@40373 -
2018-11-26 22:27:31 +00:00
Jonas Maebe
a7cb99f012
* when transforming the structure of a node tree involving full boolean
...
evaluation flags, also move the full boolean evaluation flags
git-svn-id: trunk@40367 -
2018-11-25 20:56:58 +00:00
florian
c43cae9231
* disable MovOpMov2MovOp optimization on x86-64 for now as it seems to break
...
git-svn-id: trunk@40361 -
2018-11-21 21:22:54 +00:00
florian
477d7be651
* building on i386-linux fixed
...
git-svn-id: trunk@40360 -
2018-11-21 19:19:24 +00:00
florian
ac37a54d79
+ MovOpMov2MovOp optimization
...
git-svn-id: trunk@40359 -
2018-11-20 22:20:43 +00:00
Jonas Maebe
b96a8aee61
* don't generate tempsfinalize nodes in except filter procdefs, as that would
...
finalize the parent's temps twice (fix for r40345, mantis #34574 )
git-svn-id: trunk@40357 -
2018-11-20 19:25:06 +00:00
florian
ccb8e86560
* fixes arm
...
git-svn-id: trunk@40350 -
2018-11-18 14:16:20 +00:00
Jonas Maebe
bfc7c58a69
* synchronised with trunk till r40348
...
git-svn-id: branches/debug_eh@40349 -
2018-11-18 12:01:50 +00:00
Jonas Maebe
ea69a5b372
* finalizetemps nodes should never be considered equal and have side effects
...
git-svn-id: trunk@40348 -
2018-11-18 11:07:28 +00:00
pierre
0052e4da81
* Use getasizeint/putasizeint for tfieldvarsym.fieldoffset
...
* Change CurrentPPUVersion
git-svn-id: trunk@40347 -
2018-11-18 10:32:13 +00:00
florian
9d56387e7f
+ new spilling heuristics which takes care of the usage weigth of a register,
...
not yet activated, can be selected by passing SPILLING_NEW when compiling the compiler
git-svn-id: trunk@40346 -
2018-11-18 10:11:13 +00:00
Jonas Maebe
3b9f5a5e96
* moved finalization of code generator temps to a node, so it can be getcopy'd
...
(needed for LLVM, where we need two copies of the finally code: one in case
an exception occurs, and one in case none is raised)
o also first finalize parameters and only then code generator temps, since
in theory the former could create more of the latter
git-svn-id: trunk@40345 -
2018-11-17 22:38:36 +00:00
Jonas Maebe
d1361ca6ed
* fixed adjustments of lower/upper bounds in range test optimization in case
...
of strictly smaller/greater comparisons (mantis #34385 )
git-svn-id: trunk@40344 -
2018-11-17 22:38:31 +00:00
florian
cefb38b605
* better alignment of while loop heads
...
git-svn-id: trunk@40340 -
2018-11-17 15:08:24 +00:00
florian
ae8304f657
* set nf_write flag properly for vec. nodes of types with implicit dereferencing
...
git-svn-id: trunk@40339 -
2018-11-17 15:08:23 +00:00
florian
08d6ca7260
* better alignment on 386-linux
...
git-svn-id: trunk@40338 -
2018-11-17 15:08:22 +00:00
florian
6dbde11f5a
* three operand shl for shifting by 2, 4 or 8 can be simulated by lea
...
git-svn-id: trunk@40337 -
2018-11-17 15:08:22 +00:00
Jonas Maebe
4d262e0eca
* fixed return value of fpc_eh_return_data_regno(1) on x86-64
...
git-svn-id: branches/debug_eh@40336 -
2018-11-17 09:40:37 +00:00
pierre
bee9421f2a
Change local variables offsetdec and extraoffset type to ASizeInt
...
git-svn-id: trunk@40326 -
2018-11-16 13:28:26 +00:00
pierre
23570bed33
Use same parameter type for update_reference_offset override
...
git-svn-id: trunk@40325 -
2018-11-16 13:26:56 +00:00
pierre
2761448f44
* Disable range check for m68k/aoptcpu unit
...
* Add missing change of var parameter p to next instruction
in TryToOptimizeMove method after instruction removal.
git-svn-id: trunk@40324 -
2018-11-16 10:27:42 +00:00
pierre
11851d274c
Fix riscv32 compilation error introduced in last commit
...
git-svn-id: trunk@40323 -
2018-11-16 10:24:27 +00:00
pierre
aebc8527ef
Also disable range checking in arm/aoptcpu unit
...
git-svn-id: trunk@40322 -
2018-11-15 22:01:25 +00:00
florian
095bd6da7d
* do not re-used gottpoff symbols as they are PC-relative
...
git-svn-id: trunk@40321 -
2018-11-15 20:07:56 +00:00
pierre
53a27fe7b3
Disable range check in m68k:tiscv32 and riscv64 cgcpu units
...
git-svn-id: trunk@40319 -
2018-11-15 16:58:40 +00:00
pierre
7c92412c74
Avoid overflow error in riscv code generator
...
git-svn-id: trunk@40318 -
2018-11-15 16:57:57 +00:00
florian
6a6ea6729f
* i8086 compiler fixed, resolves #34552
...
git-svn-id: trunk@40316 -
2018-11-14 18:05:35 +00:00
pierre
4657f45e74
* Change first parameter type of function is_continuous_maks to aword type.
...
Add typecasts where needed to allow for successful compilation of arm-linux target
with -CriotR options when building the compiler.
git-svn-id: trunk@40314 -
2018-11-14 13:13:19 +00:00
pierre
cacd8f28eb
Try to avoid expectloc not set after first pass error for call node
...
git-svn-id: trunk@40309 -
2018-11-13 15:51:32 +00:00
pierre
b4315f0f4f
+ Introduce PPC_SUFFIXES, new make variable that lists all ppc suffixes
...
for all different CPUs supported.
* Use PPC_SUFFIXES in execlean and CPU_clean targets.
* Also delete CPU/bin subbirectory.
git-svn-id: trunk@40307 -
2018-11-13 15:10:21 +00:00
svenbarth
251dfb6776
* don't allow constants of the record type that is currently being parsed; this would fail as soon as another field is added after the constant declaration
...
+ added tests
Note: unlike what bug report 27880 suggests Delphi also does *NOT* allow this (at least a current Delphi Tokyo) and fails with a "type is not completely defined" error, so this test belongs into the "failure" category
git-svn-id: trunk@40285 -
2018-11-11 22:08:29 +00:00
svenbarth
446f89719c
* move checking whether a field's type is valid for the field to a separate function
...
git-svn-id: trunk@40284 -
2018-11-11 22:08:24 +00:00
florian
e8ebc00b3b
* redundant code removed, work is meanwhile done by aasmcpu.optimize_ref
...
git-svn-id: trunk@40282 -
2018-11-11 17:32:21 +00:00
florian
72416edcc4
+ support for tlsm_general on i386-linux
...
git-svn-id: trunk@40281 -
2018-11-11 17:32:20 +00:00
pierre
c3914c1f38
Downgrade EXTDEBUG warning to note about zero size temp, as it is used for empty sets
...
git-svn-id: trunk@40278 -
2018-11-08 20:19:54 +00:00
pierre
796db4cef5
Implement mark_write override for tinilinenode
...
git-svn-id: trunk@40277 -
2018-11-08 20:18:30 +00:00
florian
a40335de34
* non-linux arm targets fixed
...
git-svn-id: trunk@40276 -
2018-11-08 19:57:30 +00:00
florian
e157939b41
* compilation on x86-64 and i8086 fixed
...
git-svn-id: trunk@40275 -
2018-11-08 18:45:16 +00:00
florian
4d2d26c318
* define renamed into tls_threadvars
...
git-svn-id: trunk@40274 -
2018-11-07 22:03:04 +00:00
florian
063415fa72
+ i386-linux support for tls-based threadvars
...
git-svn-id: trunk@40272 -
2018-11-07 22:03:02 +00:00
florian
0d50a63c7d
+ tsettings.tlsmodel
...
git-svn-id: trunk@40271 -
2018-11-07 22:03:01 +00:00
florian
c37c485eb7
+ check if initialization/finalization code uses implicitly thread vars
...
git-svn-id: trunk@40269 -
2018-11-07 22:03:00 +00:00
florian
9f16c34329
+ initial work for tls-based threadvar support on arm-linux
...
git-svn-id: trunk@40267 -
2018-11-07 22:02:58 +00:00
yury
5c5dc2ed50
* Changed verbosity of ""???" not yet supported inside inline procedure/function" to note to be consistent with note "Call to subroutine "?" marked as inline is not inlined".
...
git-svn-id: trunk@40255 -
2018-11-07 12:57:23 +00:00
yury
dd60397165
+ Added the pio_inline_not_possible flag to timplprocoption. It is set if a function can't be inline (contains an assembler block, etc). When calling such functions, no note "Call to subroutine "?" marked as inline is not inlined" is emitted.
...
git-svn-id: trunk@40254 -
2018-11-07 12:20:30 +00:00
yury
b115886930
* po_inline can't be removed from procoptions when the interface part is already parsed. It changes the interface's CRC and causes other units to recompile.
...
git-svn-id: trunk@40238 -
2018-11-06 10:21:06 +00:00
pierre
8d5cfa8731
Disable range checking in rax86int unit
...
git-svn-id: trunk@40237 -
2018-11-06 07:41:15 +00:00
pierre
d55f80d2f9
Really change extension of hs1 local variable in get_exepath
...
git-svn-id: trunk@40236 -
2018-11-06 07:40:31 +00:00
yury
5f1933eecf
* Addition to r40225: Forgot to remove inline in the implementation.
...
git-svn-id: trunk@40227 -
2018-11-05 14:46:09 +00:00
yury
f5ce7c572b
* Removed inline for Unix2AmigaPath since it is not necessary and can't be inlined anyway due to ansistring conversion.
...
git-svn-id: trunk@40226 -
2018-11-05 14:37:01 +00:00
yury
a7642b70c1
* Removed inline for functions which access private variables and can't be inlined from outside.
...
git-svn-id: trunk@40225 -
2018-11-05 14:35:23 +00:00
yury
c2c942374d
* Removed inline for methods which are too big.
...
git-svn-id: trunk@40224 -
2018-11-05 14:33:39 +00:00
yury
95d18cd052
* If a function can't be inline (contains an assembler block, etc) remove the po_inline flag from its procoptions.
...
git-svn-id: trunk@40223 -
2018-11-05 14:18:27 +00:00
yury
8fba43609d
+ Added overloaded version of stringdup() for ansistring to allow stringdup to be inlined.
...
git-svn-id: trunk@40221 -
2018-11-05 14:00:51 +00:00
yury
c9a7503bbb
* Rearranged the code to place implementation of inline methods before their usage within this unit.
...
git-svn-id: trunk@40220 -
2018-11-05 13:59:59 +00:00
yury
0a3c94bc72
* Moved inline methods to the beginning in order to allow them to be actually inlined in this unit.
...
git-svn-id: trunk@40219 -
2018-11-04 19:50:09 +00:00
Károly Balogh
7bd590c9a7
fix the missing semicolos in the previous fix..
...
git-svn-id: trunk@40218 -
2018-11-04 18:15:24 +00:00
Károly Balogh
12a22b593d
initialize result before passing it to FindFile()
...
git-svn-id: trunk@40217 -
2018-11-04 18:03:00 +00:00
yury
4682ac269d
* Further improvement for r40180:
...
An uninitialized function Result of a managed type needs special handling.
When passing it as a var parameter a warning need to be emitted, since a user
may expect Result to be empty (nil) by default as it happens with local vars
of a managed type. But this is not true for Result and may lead to serious issues.
The only exception is SetLength(Result, ?) for a string Result. A user always
expects undefined contents of the string after calling SetLength(). In such
case a hint need to be emitted.
+ Tests for this.
git-svn-id: trunk@40216 -
2018-11-04 15:37:52 +00:00
florian
34d11046e0
* wrapcomplexinlinepara takes care of function results which need different temp. handling, resolves #34438
...
* tw34438 failed with -O3, fixes also dfa for inline functions returning results as "complex" parameter
git-svn-id: trunk@40202 -
2018-11-03 17:31:10 +00:00
florian
42e54c1ad5
* max_operands needs only to be 2 on avr
...
git-svn-id: trunk@40197 -
2018-11-03 10:39:58 +00:00
pierre
0e546d47ca
Fix 3 operand version of MatchOpType
...
git-svn-id: trunk@40196 -
2018-11-02 23:18:54 +00:00
florian
9b0ff05ee8
- get rid of MaxOps, it is redundant with max_operands
...
* MatchOpType with three operands is only available of max_operands>2
git-svn-id: trunk@40190 -
2018-11-02 21:32:29 +00:00
Jonas Maebe
513481ad71
* fixed overzealous removal of an assigned(t1) check in r40142 (it was for a
...
ttryexceptnode instead of for a ttryfinally node)
git-svn-id: trunk@40189 -
2018-11-02 21:12:18 +00:00
yury
30d64cec68
* Removed unused local vars.
...
git-svn-id: trunk@40185 -
2018-11-02 18:51:19 +00:00
yury
a026252508
* Commented out unused "size" local var.
...
git-svn-id: trunk@40184 -
2018-11-02 18:47:34 +00:00
yury
4357caaad8
* Removed unused local vars.
...
git-svn-id: trunk@40183 -
2018-11-02 18:44:29 +00:00
yury
2dc64e5fae
* Reverted r40181 because the "not inlined" notes are issued not due to access to private fields, but due to string conversion. It need to be fixed by overloaded versions of some methods.
...
git-svn-id: trunk@40182 -
2018-11-02 18:21:26 +00:00
yury
fa2d82f879
* Removed 'inline' from public methods of TFPObjectList and TFPHashObjectList since they use private fields and can not be inlined when called from other units.
...
git-svn-id: trunk@40181 -
2018-11-02 16:55:33 +00:00
yury
1b151df89f
* Make SetLength() to emit hint "Local variable "s" of a managed type does not seem to be initialized" instead of the warning. This change is needed because when calling a regular procedure with a ver parameter of a managed type the hint is generated. Now SetLength() behaves the same.
...
git-svn-id: trunk@40180 -
2018-11-02 16:19:18 +00:00
pierre
2a9ce2ed6c
Disable three operand overload of MatchOpType for avr and jvm targets, which only have 2 operands max
...
git-svn-id: trunk@40170 -
2018-11-01 23:04:18 +00:00