svenbarth
cc92af8423
* apply patch by Blaise.ru to enable the correct generation of names for classes/interfaces inside local symtables; these will be required for reference function types which are in fact interfaces and classes, this does not mean that ordinary classes can be declared inside functions
...
Note: no test as the functionality is not yet used
git-svn-id: trunk@47834 -
2020-12-22 22:22:35 +00:00
svenbarth
cbe352808a
* fix for Mantis #38238 : when creating a copy of a procdef for a procvar set the methodpointer flag also for methods of records
...
+ added test
git-svn-id: trunk@47826 -
2020-12-20 22:41:27 +00:00
svenbarth
32938dde1c
* apply patch by Blaise.ru to allow record methods to be assigned to method variables as well (this is Delphi compatible)
...
+ added test
git-svn-id: trunk@47794 -
2020-12-16 21:43:25 +00:00
pierre
6230de31bb
* Second patch xml-node-dump-defs.patch from J. Gareth Moreton from bug report 36882.
...
With same changes to ensure that xmllint find no errors in generated xml files.
git-svn-id: trunk@47667 -
2020-12-02 21:01:40 +00:00
florian
d5e20fa6a9
* take variant alignment from TVARDATA, should resolve #38022
...
git-svn-id: trunk@47286 -
2020-11-02 22:16:18 +00:00
florian
3b0168ae16
* (slightly) modified (formatting, warning) patch by Jan Bruns to speed up overloading search, resolves #36666
...
git-svn-id: trunk@47111 -
2020-10-14 20:08:10 +00:00
svenbarth
eb7158d250
* ensure that internal method names (namely operator overloads and class con-/destructors) result in different mangled names from ordinary methods even if they should be converted to lowercase (which happens for section names)
...
+ added tests
git-svn-id: trunk@47110 -
2020-10-14 09:11:44 +00:00
florian
637976e83f
* patch by Marģers to unify internal error numbers, resolves #37888
...
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
svenbarth
d1521e8061
* a classrefdef might also be created with a forwarddef, so handle that correctly
...
git-svn-id: trunk@46850 -
2020-09-11 21:24:59 +00:00
Jonas Maebe
cc315e0ac7
* fix tw3930 after r37927
...
o "unique" class (and interface) type aliases should actually not exist at
all except for overload resolution. All the rest (VMT, UUID, RTTI, ...)
should be taken from the aliased class/interface
o there is one Delphi-incompatibily left after this change, but it shouldn't
matter: tw8180 does not compile if you change the declaration to
"tcl=class(TInterfacedObject,XStr,iinterface)", while Kylix does compile
that. It doesn't really matter though, because in Kylix this actually
adds iinterface twice as implemented interface, so there is no point
in accepting this.
git-svn-id: trunk@46773 -
2020-09-05 12:25:09 +00:00
yury
222f981dd1
* 8086: Fixed Ofs() for far routines.
...
resultdef of typeconvnode.typecheck_proc_to_procvar() is reused every time you get an address of a proc. So it is forbidden to change the far/near attribute of resultdef - it leads to mess during code generation.
Instead it is needed to use separate reusable resultdefs with new flags pc_far_address and pc_offset.
git-svn-id: trunk@46470 -
2020-08-17 13:37:55 +00:00
florian
14bc6674a6
* revert part of r45810 which was accidently committed
...
git-svn-id: trunk@45813 -
2020-07-20 20:21:44 +00:00
florian
d6d92e3666
* revert part of r44879: flock must use kernel_off_t: off_t breaks e.g. i386
...
git-svn-id: trunk@45810 -
2020-07-19 19:54:22 +00:00
Jonas Maebe
3e9e0a0f7d
* completely disable records containing float fields in registers again, as
...
the code generator does not support subsetreg loads of floats
git-svn-id: trunk@45800 -
2020-07-17 20:57:20 +00:00
Jonas Maebe
e7d1a77f9a
* rename the ARM/AArch64-Darwin targets to ARM/AArch64-iOS
...
* rename the m68k/PowerPC-MacOS targets to m68k/PowerPC-MacOSClassic
* repurpose the AArch64/Darwin target for AArch64/macOS
o make AArch64-Darwin default target for a hosted AArch64-Darwin compiler
git-svn-id: trunk@45758 -
2020-07-10 21:52:24 +00:00
svenbarth
f94518a9ae
* fix typo (no code changes)
...
git-svn-id: trunk@45680 -
2020-06-22 20:39:55 +00:00
yury
e63c03125a
* Reworked tprocdef.is_implemented to fix a bug with the parentfp optimization. The bug was detected when using the llvm backend.
...
+ Added a test.
git-svn-id: trunk@45675 -
2020-06-21 19:52:14 +00:00
florian
c6c996f506
* write length/code page when writing the string type
...
git-svn-id: trunk@45654 -
2020-06-15 19:50:49 +00:00
yury
627fcb4354
* Do not use the LOC_VOID location to indicate unused parameters.
...
* Added the tprocdef.parentfpsym property. Set parentfpsym.varstate to vs_read instead of using the pio_needs_parentfp flag.
* Replaced tcgcallparanode.push_zero_sized_value_para by tparamanager.has_strict_proc_signature.
git-svn-id: trunk@45454 -
2020-05-21 09:36:40 +00:00
yury
2808873d1b
* Reworked the optimization of unused $parentfp for nested routines.
...
- Do not remove the $parentfp parameter as was done in the previous optimization approach. Instead when $parentfp is unused to the following:
- On the caller side: Omit passing the value for $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=false (classic CPU targets).
Pass 0/nil as $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=true;
- On the callee side: Prevent allocation of registers/resources for $parentfp.
- When possible keep $parentfp in a register.
- Set the pio_nested_access flag in tprocinfo.set_needs_parentfp() to properly handle deep nesting levels;
git-svn-id: trunk@45436 -
2020-05-19 13:17:47 +00:00
Jonas Maebe
a2174753c1
- removed tabstractrecorddef.get_unit_symtable, which did not always return the unit
...
symtable (when you had a local recorddef in a procdef)
* modified tdef.get_top_level_symtable() so you can specify whether you want to
skip procdefs or not
* changed tobjectdef.vmt_def() to no longer require a typesym for the tobjectdef
(based on patch by Blaise)
git-svn-id: trunk@45361 -
2020-05-13 21:46:29 +00:00
yury
7cda3d9e57
* Code formatting.
...
git-svn-id: trunk@45323 -
2020-05-09 21:53:43 +00:00
yury
a316229ef6
* Always use parentfp for forward-declared nested procedures.
...
git-svn-id: trunk@45320 -
2020-05-09 17:52:17 +00:00
florian
f72a795cc7
* fixed SetIsEmpty
...
git-svn-id: trunk@45094 -
2020-04-26 13:11:02 +00:00
svenbarth
60345366f2
* fix for Mantis #35140 : apply patch by Ryan Joseph together with some further changes by me to add support for constant parameters in generics
...
+ added tests
git-svn-id: trunk@45080 -
2020-04-25 22:12:35 +00:00
florian
d772a42375
* arm: more fixes for fpu_fpv4_sp_d16
...
* take care of FPUARM_HAS_VFP_DOUBLE
* use FPUARM_HAS_VFP_EXTENSION instead of checking fpu_vfp_first and ...last
git-svn-id: trunk@44707 -
2020-04-12 18:05:50 +00:00
florian
96a368fdf9
* building on non-x86/non-xtensa fixed
...
git-svn-id: trunk@44551 -
2020-04-03 20:40:36 +00:00
florian
fa4cbc89a5
+ Xtensa: hard float support, i.e. make use of floating point extension if available
...
git-svn-id: trunk@44539 -
2020-04-03 20:15:23 +00:00
Jonas Maebe
4ba19f5418
* add support for creating non-address-only procvars to
...
cprocvar.getreusableprocaddr()
git-svn-id: trunk@44516 -
2020-04-02 21:21:36 +00:00
svenbarth
41a6957f7d
* keep track of the fileposinfo for generic constraints
...
git-svn-id: trunk@44188 -
2020-02-16 09:53:32 +00:00
svenbarth
cba43ebe1b
- remove generic_buf_needs_swapping again as that is now handled with tmodule.change_endian of the generic's module
...
git-svn-id: trunk@44074 -
2020-01-30 21:49:56 +00:00
pierre
d1e4066477
Hopefully fix problems related to loading of ppufile generated with other endianess for generics
...
git-svn-id: trunk@44056 -
2020-01-28 23:43:56 +00:00
florian
70a836c4a2
* first part of merging parts of Jeppe's intrinsics patch, mainly r31135
...
is merged by this commit with a lot of adaptions
git-svn-id: trunk@43949 -
2020-01-14 21:52:39 +00:00
Jonas Maebe
b355ba3d39
* record whether a function uses fastmath, and define the function as
...
strictfp if it doesn't (so LLVM doesn't perform transformations that can
change the fp/exception behaviour)
git-svn-id: trunk@43818 -
2019-12-30 15:05:06 +00:00
Jonas Maebe
f5833dc048
* support for marking arraydefs as vectors
...
git-svn-id: trunk@43782 -
2019-12-24 22:12:31 +00:00
svenbarth
f2818bfe7a
* apply patch by Blaise.ru to remove last remnants of VMT regeneration which is no longer needed/used
...
git-svn-id: trunk@43628 -
2019-12-02 22:29:29 +00:00
svenbarth
3ced30f816
* apply (adjusted) patch by Blaise.ru: vmtentries is always created since 2008, so treat it as such (also fixes a memory leak in tobjectdef.getcopy)
...
git-svn-id: trunk@43626 -
2019-12-02 06:59:05 +00:00
svenbarth
ea75253926
* initialize the defid in trecorddef.create_global_internal as unique_id_str needs it
...
git-svn-id: trunk@43625 -
2019-12-02 06:58:59 +00:00
svenbarth
06c1a17d13
* use tdef.unique_id_str to generate the unique internal name for anonymous record defs as using the count of the deflist is no longer correct
...
git-svn-id: trunk@43616 -
2019-11-30 17:40:27 +00:00
Jonas Maebe
e775ecdc43
* cleaned up safecall support: use a hidden localvarsym instead of result
...
register hacking
o this also allowed fixing/adding safecall support for LLVM
git-svn-id: trunk@43578 -
2019-11-24 20:23:22 +00:00
Jonas Maebe
ac1e0f96bd
* replaced tentryfile.get/putsmall/normalset() with a common tget/putset
...
that expects an open array of byte, and use it for all sets
o since all sets need to be typecasted to an array type of the appropriate
size, we'll get a compilation error in case this needs to be done and
that also tells us at the same time that the ppu version will need to
be increased
* enabled {$packset 1} for the compiler, as this is now safe with the above
changes
git-svn-id: trunk@43407 -
2019-11-06 21:50:19 +00:00
Jonas Maebe
a051b8d225
- remmoved doregister parameter from t*sym constructors, as the registration
...
is handled automatically nowadays
git-svn-id: trunk@42998 -
2019-09-14 17:30:45 +00:00
pierre
5d9771d141
Suppress range check/invalid typecast errors when compiling with -CriotR option
...
git-svn-id: trunk@42942 -
2019-09-07 21:14:12 +00:00
pierre
970ce7f243
Avoid error with -CR option in tobjectdef.vmt_def method
...
git-svn-id: trunk@42711 -
2019-08-16 16:31:08 +00:00
florian
85edf1c1eb
* reworked arm vfp capability handling to use fpu_capabilites
...
git-svn-id: trunk@42679 -
2019-08-13 18:41:15 +00:00
svenbarth
fc46b6c57c
* apply patch by Blaise.ru to pass the record name for an internal record more efficiently
...
git-svn-id: trunk@42653 -
2019-08-11 17:26:44 +00:00
svenbarth
955ebf2f09
* applied patch by Blaise.ru to reduce code duplication in trecorddef.create_global_internal()
...
git-svn-id: trunk@42652 -
2019-08-11 17:26:35 +00:00
Jonas Maebe
6eafee72d7
- fixed check for determining whether requesting the size of an array is
...
an invalid operation after r42479, as regular arrays can have high=-1
(mantis #35874 , already checked by trange3)
git-svn-id: trunk@42482 -
2019-07-22 12:06:26 +00:00
florian
aac8559a8d
* some runtime errors fixed, if compiled with -CrR
...
git-svn-id: trunk@42479 -
2019-07-21 12:25:55 +00:00
svenbarth
43b5dbf613
* fix for Mantis #23071 : also store local symtable in the PPU if the procdef is generic as we need it to resolve genericdefs to nested types
...
git-svn-id: trunk@42459 -
2019-07-19 15:55:28 +00:00