Commit Graph

56898 Commits

Author SHA1 Message Date
svenbarth
652e1985a9 * implement thunking for x86_64 SysV ABI targets
git-svn-id: trunk@42734 -
2019-08-18 18:30:42 +00:00
svenbarth
58ada1f547 + add a test for RawThunk; this does not require a function call manager thus it's better to place it in the general RTTI testcase so that it's always tested
git-svn-id: trunk@42733 -
2019-08-18 18:30:39 +00:00
svenbarth
62a61bdb41 * fix ifdefs for non-fpc (Lazarus likes to mess these up during auto completion...)
git-svn-id: trunk@42732 -
2019-08-18 18:30:37 +00:00
svenbarth
048dc7b289 * implement RawThunk for x86_64-win64
git-svn-id: trunk@42731 -
2019-08-18 18:30:34 +00:00
Jonas Maebe
27a4a3d446 * added error checking to the test
git-svn-id: trunk@42730 -
2019-08-18 15:55:11 +00:00
Jonas Maebe
693e72ade3 * Darwin now uses Mach VM calls for memory allocation instead of mmap/munmap
+ added sysrealloc support for Darwin (Darwin does not have mremap)

git-svn-id: trunk@42729 -
2019-08-18 15:55:07 +00:00
Jonas Maebe
14a7429e19 * factored out inlinenode check whether it may have a side effect
o also added register assert as having a side-effect (if asserts are
     enabled)

git-svn-id: trunk@42728 -
2019-08-18 15:55:03 +00:00
florian
5d1d9858d1 + VMovVMov2VMov optimization
git-svn-id: trunk@42727 -
2019-08-18 12:09:03 +00:00
florian
3d5ab366e1 * fix RemoveSuperfluousVMov if the VMov destination reg is an integer register, resolved #35978
git-svn-id: trunk@42726 -
2019-08-18 11:28:39 +00:00
florian
4f38f12815 -- Zusammenführen von r42706 bis r42724 in ».«:
U    tests/utils/avx/avxopcodes.pas
U    compiler/x86/aasmcpu.pas
U    compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von r42706 bis r42724 in ».«:
 U   .

git-svn-id: trunk@42725 -
2019-08-18 11:18:41 +00:00
tg74
a5e158f8d6 cleanup
git-svn-id: branches/tg74/avx512merge@42724 -
2019-08-18 04:41:34 +00:00
tg74
9baf452681 Bugfix GATHER/SCATTER memref
git-svn-id: branches/tg74/avx512merge@42723 -
2019-08-18 04:39:36 +00:00
florian
9230ae5aab o overhaul-base.patch by J. Gareth Moreton, base for further patches
+ some inline directives added
  + some functions exported from units

git-svn-id: trunk@42722 -
2019-08-17 16:14:22 +00:00
Mattias Gaertner
210caa0c8d fcl-passrc: fixed IsTypeCast for record type
git-svn-id: trunk@42721 -
2019-08-17 15:41:51 +00:00
svenbarth
9cac24a325 * fix compilation on targets that don't have a RawThunk defined yet
git-svn-id: trunk@42720 -
2019-08-17 15:36:01 +00:00
svenbarth
7d9b249def + add TRttiOrdinalType and TRttiInt64Type (what's left of the "ordinal like" ones is TRttiEnumerationType, TRttiSetType and a non-Delphi compatible TRttiBooleanType (due to FPC supporting multiple Boolean types))
git-svn-id: trunk@42719 -
2019-08-17 15:35:58 +00:00
svenbarth
92c6d166a8 * TRttiFloatType.GetFloatType() can be inline
git-svn-id: trunk@42718 -
2019-08-17 15:35:55 +00:00
svenbarth
8fdee2b3b1 * implement TRttiFloatType.GetTypeSize()
git-svn-id: trunk@42717 -
2019-08-17 15:35:52 +00:00
Mattias Gaertner
8ee413a736 pastojs: skip specialized types
git-svn-id: trunk@42716 -
2019-08-17 13:35:27 +00:00
Mattias Gaertner
4787de8764 fcl-passrc: half specialized type
git-svn-id: trunk@42715 -
2019-08-17 13:35:16 +00:00
Mattias Gaertner
5bf43bd1d4 fcl-passrc: specialize class interface
git-svn-id: trunk@42714 -
2019-08-17 08:29:15 +00:00
florian
f0213a2c46 + make use of the mremap syscall of linux to re-allocate large memory blocks faster
git-svn-id: trunk@42713 -
2019-08-16 20:47:37 +00:00
Mattias Gaertner
880f7d7c1c fcl-passrc: specialize nested class type
git-svn-id: trunk@42712 -
2019-08-16 19:57:55 +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
svenbarth
16f47fbee3 * explicitely ignore the TestIntfMethods test if TVirtualInterface is not supported
git-svn-id: trunk@42710 -
2019-08-16 15:43:09 +00:00
svenbarth
95b60bc6b2 * switch TVirtualInterface to using thunks for QueryInterface, _AddRef and _Release as otherwise _Release will execute code that's no longer valid (it's also a bit more performant ;) )
Note: this is currently i386 only, x86_64 needs to be switched as well and thus TVirtualInterface.Create will raise a ENotImplemented there

git-svn-id: trunk@42709 -
2019-08-16 15:43:07 +00:00
svenbarth
2c4d7b6316 * implement a infrastructure for method thunks (these first adjust Self and then jump to the specified address)
git-svn-id: trunk@42708 -
2019-08-16 15:43:04 +00:00
florian
ba203c0564 + x86 makes use of fpu_capabilities
* moved CPUX86_HAS_AVXUNIT to FPUX86_HAS_AVXUNIT
+ mm register allocator can be initialized with 32 mm registers of AVX512

git-svn-id: trunk@42707 -
2019-08-16 11:35:03 +00:00
tg74
aa9c00193a Merge in trunk
git-svn-id: branches/tg74/avx512merge@42706 -
2019-08-16 08:17:38 +00:00
Mattias Gaertner
497c830603 fcl-passrc: check used unit reference for duplicate, in case unit is found via different names
git-svn-id: trunk@42704 -
2019-08-16 07:28:09 +00:00
Mattias Gaertner
8ad47efcb3 fcl-passrc: specialize class with nested record type
git-svn-id: trunk@42703 -
2019-08-16 06:48:12 +00:00
Mattias Gaertner
32573139a8 fcl-passrc: specialize inlinespecializeexpr
git-svn-id: trunk@42702 -
2019-08-15 17:25:12 +00:00
svenbarth
0e79bd2c70 + add a test that ensures that the introduction of fullscale array constructors didn't mess with array constructors passed to an open array of Variant
git-svn-id: trunk@42701 -
2019-08-15 14:33:03 +00:00
svenbarth
44bfa98a30 * fix for Mantis #35955: when the element of an array constructer requires an operator for conversion we don't let the caller of compare_defs_ext know that, instead we simply say that some conversion is required and let the typecheck handler deal with the element wise conversion
+ added test

git-svn-id: trunk@42700 -
2019-08-15 14:33:00 +00:00
svenbarth
663040a666 * ensure that aprocdef is initialized to Nil to catch problems with compare_defs_ext() easier
git-svn-id: trunk@42699 -
2019-08-15 14:32:57 +00:00
svenbarth
10af6fe2fb * fix for Mantis #35965: correct alignment also for the class info used to retrieve the unit name
+ added test

git-svn-id: trunk@42697 -
2019-08-15 13:29:19 +00:00
svenbarth
aa0422b2ed * fix for Mantis #35964: reestablish pre r42594 behavior for WinCE as at least Windows Mobile does not support the required COM functions
Note: in theory Windows CE *can* support these functions, but it dependends on the provider whether they're indeed supported (e.g. Windows Mobile does not). Probably this should be revisited once we support the "delayed" directive.

git-svn-id: trunk@42696 -
2019-08-15 11:41:36 +00:00
Jonas Maebe
03cd0cce59 * change result of pi function from ansistring into dynamic array, so we
generate unique calls every time we write to it
  * replace calls to high(ansistring/dynarray) in the inner body of the pi
    function with a variable that gets assigned once
  -> the FPC version is now just as fast as the C version

git-svn-id: trunk@42695 -
2019-08-15 10:32:36 +00:00
florian
45847da693 * fix building for targets with no vfp support
git-svn-id: trunk@42693 -
2019-08-15 09:37:50 +00:00
pierre
f82cc96cb9 Check that inserttypeconv really change node type to ttypeconvnode before setting convtype field (should fix taddbool.pp bytebool failure on powerpc)
git-svn-id: trunk@42692 -
2019-08-14 23:00:35 +00:00
nickysn
81fba52adb + added constant NewExeRelocationRecordSize
git-svn-id: trunk@42691 -
2019-08-14 15:10:22 +00:00
Mattias Gaertner
35d7fade97 fcl-passrc: replace method impl arguments with intf arguments
git-svn-id: trunk@42690 -
2019-08-14 12:38:06 +00:00
Mattias Gaertner
55b1f676dc pastojs: fixed tests
git-svn-id: trunk@42689 -
2019-08-14 10:44:36 +00:00
Mattias Gaertner
b4b6efc5a0 fcl-passrc: check forward generic class constraints match
git-svn-id: trunk@42688 -
2019-08-14 10:42:16 +00:00
nickysn
71df2911da * fixed compilation with -Sew
git-svn-id: trunk@42687 -
2019-08-14 02:19:26 +00:00
nickysn
0224d632f1 + added and implemented method TNewExeRelocation.EncodeTo
git-svn-id: trunk@42686 -
2019-08-14 02:14:02 +00:00
florian
3a1ecd4f16 * fix tarminlinenode.first_sqrt_real
git-svn-id: trunk@42685 -
2019-08-13 22:12:53 +00:00
florian
0a0397c9f5 * forgotten part of previous commit: fix BccB2Cond optimization on arm
git-svn-id: trunk@42684 -
2019-08-13 22:12:52 +00:00
florian
ba0768b6a6 * building with -Cfvfpv2 hopefully fixed
git-svn-id: trunk@42683 -
2019-08-13 22:12:52 +00:00
florian
867df5362c + basic Neon support in the assembler writer
+ make use of VEOR if possible to clear VFP registers

git-svn-id: trunk@42682 -
2019-08-13 22:12:51 +00:00