Commit Graph

22825 Commits

Author SHA1 Message Date
florian
bd96765632 * AVR: do not insert jmp if not supported
git-svn-id: trunk@43995 -
2020-01-19 18:04:58 +00:00
florian
2d9cdab264 + AVR: initial support for the avrtiny architecture
git-svn-id: trunk@43987 -
2020-01-19 15:55:24 +00:00
florian
f629fa1bb9 * AVR: tcgavr.normalize_ref must always load the reference into tmpreg
git-svn-id: trunk@43986 -
2020-01-19 15:55:23 +00:00
florian
26eae3672b + AVR: GetDefaultZeroReg and GetDefaultTmpReg
git-svn-id: trunk@43985 -
2020-01-19 15:55:23 +00:00
florian
aaa6ae5770 + AVR: cputype cpu_avrtiny
git-svn-id: trunk@43984 -
2020-01-19 15:55:22 +00:00
florian
96a4cda03b * AVR: fixes pushing and handling of stack passed parameters
git-svn-id: trunk@43983 -
2020-01-19 15:55:21 +00:00
florian
6f434b6751 * AVR: fixed TDwarfAsmCFILowLevel.generate_initial_instructions
git-svn-id: trunk@43982 -
2020-01-19 15:55:21 +00:00
florian
4b4e316af0 * compilation fixed
git-svn-id: trunk@43981 -
2020-01-19 15:55:20 +00:00
florian
48236401e0 * voidcodepointertype => voidpointertype as suggested by Pierre
git-svn-id: trunk@43976 -
2020-01-18 21:51:27 +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
Jeppe Johansen
2678522db5 - RISC-V: Add controller types for common RV32 MCUs.
- Adds initial controller units for these MCUs.

Code contributed by Michael Ring

git-svn-id: trunk@43935 -
2020-01-13 22:54:26 +00:00
Jeppe Johansen
02c3f328a2 - RISC-V: Share optimizations between 32 and 64-bit.
git-svn-id: trunk@43934 -
2020-01-13 22:49:23 +00:00
Jeppe Johansen
7cfb87b325 - Handle jump optimizations on RISC-V
git-svn-id: trunk@43933 -
2020-01-13 22:42:39 +00:00
florian
931d4dcfee * ensure the rtl and the packages for embedded compile with features exceptions and classes disabled
git-svn-id: trunk@43931 -
2020-01-13 21:20:03 +00:00
florian
9926eb8dc6 * patch by Christo Crause: Passing a file name with extension to cross compiler
with -o causes error, fixed, resolves #36562

git-svn-id: trunk@43921 -
2020-01-12 20:57:52 +00:00
florian
5a1e6c2e91 * compilation on i386 fixed
git-svn-id: trunk@43920 -
2020-01-12 12:00:44 +00:00
florian
2b70c64d09 * patch by J. Gareth Moreton: Some cleaning up of OptPass2JMP and OptPass2MOV, resolves #36553
git-svn-id: trunk@43919 -
2020-01-12 10:33:21 +00:00
florian
124c64152d * patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 2 of #36551
git-svn-id: trunk@43918 -
2020-01-12 09:20:01 +00:00
florian
236c11ef71 * patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 1 of #36551
git-svn-id: trunk@43917 -
2020-01-12 09:20:00 +00:00
florian
007df5d0fa * fix for #36554
git-svn-id: trunk@43913 -
2020-01-11 21:15:19 +00:00
florian
aabd7c7217 * more fixes for loop strength reduction
git-svn-id: trunk@43912 -
2020-01-11 20:37:05 +00:00
florian
a9a711763f * some fixes to loop strength reduction
git-svn-id: trunk@43911 -
2020-01-11 16:08:46 +00:00
florian
2f2b378c03 * moved conversion of for into while loops in a separate pass, so node optimizations on the node tree can be
carried out without losing information from for loops

git-svn-id: trunk@43910 -
2020-01-11 16:08:45 +00:00
florian
6f87a572af * factored out tcgprocinfo.OptimizeNodeTree
git-svn-id: trunk@43907 -
2020-01-10 21:47:20 +00:00
florian
f424ae3929 - cleanup comment
git-svn-id: trunk@43906 -
2020-01-10 21:34:30 +00:00
florian
30e186be78 * renamed sum -> defsum to avoid confusion with usesum
git-svn-id: trunk@43905 -
2020-01-10 21:34:30 +00:00
florian
b5659df425 + CalcUseSum: calculates a sum of all use sets of the current node and its children
git-svn-id: trunk@43904 -
2020-01-10 21:34:29 +00:00
florian
11287f018f * explicitly emit a sub instruction in tx86inlinenode.second_high, resolves #36530
git-svn-id: trunk@43888 -
2020-01-07 21:46:07 +00:00
Jonas Maebe
7a3a4244d1 * accept locals replaced by symbols in inline assembly by the LLVM code
generator in the AArch64 assembler writer

git-svn-id: trunk@43887 -
2020-01-07 20:22:23 +00:00
Jonas Maebe
3abdec9c95 * LLVM/AArch64: don't perform the parameter location extension workarounds
for LLVM, as that results in LLVM assuming exactly the opposite of
    what's intended (namely that the extended locations contain valid
    rather than invalid bits)

git-svn-id: trunk@43886 -
2020-01-07 20:22:20 +00:00
Jonas Maebe
31ef82b9c6 * constrained sitofp is not yet supported in LLVM for all targets
git-svn-id: trunk@43885 -
2020-01-07 20:22:17 +00:00
Jonas Maebe
9462d6b1ea * handle non-smallset sets in registers in LLVM like arrays and records
git-svn-id: trunk@43884 -
2020-01-07 20:22:13 +00:00
Jonas Maebe
a75247d9b0 * AArch64: fixed parameter defs for smallsets passed in registers whose size
is not a power of two

git-svn-id: trunk@43883 -
2020-01-07 20:22:10 +00:00
Jonas Maebe
32be078ab8 * fixed for targets where currency is implemented via int64 after r43829
git-svn-id: trunk@43882 -
2020-01-07 20:22:06 +00:00
florian
404c6e0c15 + forgotten file
git-svn-id: trunk@43879 -
2020-01-06 20:59:25 +00:00
florian
872c22842e * do prefetching correctly
* more prefetching inserted
  * unnecessary/wrong UpdateUsedRegs removed

git-svn-id: trunk@43878 -
2020-01-06 20:59:24 +00:00
florian
3dd6a8e24e * add forgotten exits, fixes r43874
git-svn-id: trunk@43877 -
2020-01-06 19:53:43 +00:00
florian
92671c9b85 o patch by J. Gareth Moreton:
* applies some optimisations to OptPass1MOV. Repeated checks to the "GetNextInstruction_p Boolean"
      variable are factored out, since all of the optimisations bar the first one require a
      succeeding instruction.

git-svn-id: trunk@43875 -
2020-01-06 17:05:48 +00:00
florian
9b68c7a5f5 * fix X86AsmOptimizer.RegModifiedByInstruction for VMOVSS/VMOVSD/IMUL
git-svn-id: trunk@43874 -
2020-01-06 17:05:47 +00:00
florian
6612bb4434 * proper naming
git-svn-id: trunk@43871 -
2020-01-06 14:58:06 +00:00
florian
ae0ebd1e93 * missing part of last commit
git-svn-id: trunk@43870 -
2020-01-06 14:48:38 +00:00
florian
6371d5f26d + infrastructure to profile different stages of the compiler
git-svn-id: trunk@43869 -
2020-01-06 14:46:32 +00:00
joost
11784cb76a * Fixed safecall on win32 with -Ooregvar by making sure that $safecallresult
is never stored in a register.

git-svn-id: trunk@43868 -
2020-01-05 23:20:52 +00:00
florian
fca4d3315b * let the operation do the type conversion for x87 floating point operations
git-svn-id: trunk@43867 -
2020-01-05 17:47:23 +00:00
Jeppe Johansen
89a961f960 * Add support for generating map files for embedded target.
git-svn-id: trunk@43866 -
2020-01-05 17:00:50 +00:00
florian
76e7833a20 * avoid invalid type cast
git-svn-id: trunk@43865 -
2020-01-05 15:43:04 +00:00
florian
d3f3f81e16 * fixes TX86AsmOptimizer.OptPass1_V_MOVAP after r43855
git-svn-id: trunk@43864 -
2020-01-05 15:43:03 +00:00
florian
22cb46fca9 * cleanup
git-svn-id: trunk@43863 -
2020-01-05 15:43:02 +00:00
Jonas Maebe
f659e91a95 * fixed LLVM compilation after r43860
git-svn-id: trunk@43862 -
2020-01-05 13:15:10 +00:00
florian
a34ae2261a * copy fpu parameters using fld/fst onto the stack
git-svn-id: trunk@43861 -
2020-01-04 22:19:15 +00:00
florian
b7c6e01b03 * cleaning up tcgsize: it makes no sense to declare every combination and type
the different vector types must be either handled in the high level cg or
    by using the shuffle parameter

git-svn-id: trunk@43860 -
2020-01-04 21:54:53 +00:00
florian
73c6cab096 + MovMovMov2XChg optimization by J. Gareth Moreton
git-svn-id: trunk@43858 -
2020-01-04 14:24:28 +00:00
florian
3c16324f80 * x86: avoid to put variables into registers if they are handled by the x87-FPU
git-svn-id: trunk@43856 -
2020-01-03 22:23:49 +00:00
florian
7da6bac960 * look further forward in TX86AsmOptimizer.OptPass1_V_MOVAP
git-svn-id: trunk@43855 -
2020-01-03 22:23:07 +00:00
florian
451afd6e45 * triggered by #36505, removed CmpJxxDecJmp2SubJcc optimization as it was wrong anyways
git-svn-id: trunk@43852 -
2020-01-03 19:15:12 +00:00
Jeppe Johansen
1201cc024e * Add riscv-embedded to targets that don't support non-constant leb128's.
git-svn-id: trunk@43851 -
2020-01-03 17:03:38 +00:00
Jonas Maebe
ebd674d40e * fixed TAOptBase.SkipEntryExitMarker() not initialising out parameter in
all cases (patch by J. Gareth Moreton, mantis #36372)

git-svn-id: trunk@43843 -
2020-01-02 19:14:18 +00:00
Jonas Maebe
e1d9be897a * fixed (harmless) wrong typecast
git-svn-id: trunk@43834 -
2020-01-01 19:19:15 +00:00
Jonas Maebe
044d946782 * fixed missing sign extension when adding a signed integer variable with
size < sizeof(pointer) to a pointer for LLVM (fixes tfmtbcd)

git-svn-id: trunk@43833 -
2020-01-01 19:19:12 +00:00
Jonas Maebe
ec0d98156c * use maytrap instead of strict FP exception behaviour in LLVM, so constant
propagation is still allowed

git-svn-id: trunk@43832 -
2020-01-01 19:19:08 +00:00
joost
76ab36b41d * Fixed generation of documentation
git-svn-id: trunk@43831 -
2020-01-01 17:23:28 +00:00
joost
171142a724 * Make Win32 SEH support enabled by default. If necessary to disable, compiler should be cycled with OPT=-dDISABLE_WIN32_SEH. Mantis #12974.
git-svn-id: trunk@43830 -
2020-01-01 14:43:57 +00:00
Jonas Maebe
1f5efe2a95 * support for constrained sitofp/uitofp with (the upcoming) LLVM 10.0
(fixes most of test/units/math/troundm, although there's still an LLVM
     optimizer/code generation bug that breaks some qword -> double
     conversions)

git-svn-id: trunk@43829 -
2019-12-31 18:05:54 +00:00
Jonas Maebe
9b53ed53e3 * the llvm.experimental.constrained.fpext intrinsic doesn't have a rounding
mode parameter

git-svn-id: trunk@43828 -
2019-12-31 18:05:50 +00:00
florian
d409548842 -- Zusammenführen von r31198 in ».«:
C    compiler/arm/aasmcpu.pas
U    compiler/arm/aoptcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von r31198 in ».«:
 U   .

git-svn-id: trunk@43825 -
2019-12-31 13:28:03 +00:00
florian
f6c16323fa * unified loadnf_load_self_pointer into loadnf_load_addr
+ var parameters are now allowed when doing tail recursion optimziation, resolves #32811

git-svn-id: trunk@43824 -
2019-12-30 22:43:10 +00:00
svenbarth
3e7dc25667 * fix for Mantis #36496: correctly handle the function result alias variable inside generic functions
+ added tests

git-svn-id: trunk@43823 -
2019-12-30 21:35:26 +00:00
Jonas Maebe
6fc79c7ed0 * set default target iOS/iPhoneSim version to 9.0 so we no longer depend
on crt.o existing, which is not shipped with the current SDKs anymore

git-svn-id: trunk@43822 -
2019-12-30 16:36:57 +00:00
Jonas Maebe
3885ce98ac * fix LLVM code generator after r43808
o share the high/length code for LLVM rather than duplicating it, since
      LLVM will optimize away the minor inefficiencies
    o removed temp reference in the old code, as it was useless (it doesn't
      prevent spilling to get to an SSA representation since the same
      register is written at least twice in all cases)

git-svn-id: trunk@43821 -
2019-12-30 15:05:17 +00:00
Jonas Maebe
a6a17efa42 * use LLVM constrained fpext/fptrunc intrinsics when fastmath is not enabled
for accurate exception behaviour

git-svn-id: trunk@43820 -
2019-12-30 15:05:13 +00:00
Jonas Maebe
797077855e * use constrained LLVM fp intrinsics for add/sub/mul/slash/fma/sqrt
operations when fastmath is not enabled

git-svn-id: trunk@43819 -
2019-12-30 15:05:09 +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
67dbd0cdb3 * support nf_internal to ignore currency conversion adjustments also on
platforms that implement currency using a floating point type

git-svn-id: trunk@43817 -
2019-12-30 15:05:02 +00:00
Jonas Maebe
9bd33f7a45 + support for LLVM metadata constant string parameters
o they are implemented as a new metadata register class, whereby the
     subregister indicates the metadata type (currently always a string)
     and the superregister is an index in the metadata array (which
     contains the strings). LLVM metadata can only be passed as parameters
     to intrinsics in bitcode, so moves of metadata into other registers
     triggers internal errors and when moving them into parameters, we
     replace the parameter's register with the metadata register (and look
     up the corresponding string when writing out the bitcode)

git-svn-id: trunk@43816 -
2019-12-30 15:04:57 +00:00
florian
f7a052f884 + inline high(<dyn. array>), resolves #28536
git-svn-id: trunk@43808 -
2019-12-28 21:38:38 +00:00
florian
9bd7401ce9 * comment fixed
git-svn-id: trunk@43805 -
2019-12-28 18:18:41 +00:00
florian
00859420ab * correctly handle reading of class/object pointers in combination with @, resolves #26326
git-svn-id: trunk@43804 -
2019-12-28 17:59:23 +00:00
florian
ccf409c8a0 * use 64 bit code page in tppcshlshrnode.pass_generate_code for all 64 bit types,
resolves #33582

git-svn-id: trunk@43795 -
2019-12-25 22:11:31 +00:00
florian
051b9840a5 * write a proper error message if <int>/<int> is encountered while no
floating point support is available, resolves #32006

git-svn-id: trunk@43794 -
2019-12-25 18:09:30 +00:00
florian
fd0012deff * when copying goto nodes take care if the label node is part of the copied tree
or not, resolves #35820

git-svn-id: trunk@43793 -
2019-12-25 17:10:14 +00:00
svenbarth
f59eae4f81 * correctly handle local reference in the RISC V assembler readers (both 32 and 64 bit)
git-svn-id: trunk@43790 -
2019-12-25 15:23:28 +00:00
svenbarth
4ad7d552a1 * increase support for multilib binutils for RISC V by passing the correct ABI to the linker
git-svn-id: trunk@43789 -
2019-12-25 15:23:25 +00:00
svenbarth
114c27fb4e * increase support for multilib binutils for RISC V by passing the ABI to the assembler
git-svn-id: trunk@43788 -
2019-12-25 15:23:21 +00:00
Jonas Maebe
1a9e246c29 * added is_normal_fieldvarsym() helper and use it
o fixes several places where there was a check whether something is a
     fieldvarsym, but not whether it's an instance rather than a class field

git-svn-id: trunk@43786 -
2019-12-24 22:12:44 +00:00
Jonas Maebe
6d51c69dbe * fixed writing of calling convention for function declarations/definitions
in LLVM

git-svn-id: trunk@43785 -
2019-12-24 22:12:40 +00:00
Jonas Maebe
b89487e721 * fix paraloc def for vectors with vectorcall calling convention (was a single
element instead of a vector)

git-svn-id: trunk@43784 -
2019-12-24 22:12:37 +00:00
Jonas Maebe
96dfe3d03a * LLVM support for writing vector types
git-svn-id: trunk@43783 -
2019-12-24 22:12:34 +00:00
Jonas Maebe
f5833dc048 * support for marking arraydefs as vectors
git-svn-id: trunk@43782 -
2019-12-24 22:12:31 +00:00
Jonas Maebe
1e3f72403e * renamed getintparaloc to getcgtempparaloc
o it can be used for more than integer parameters

git-svn-id: trunk@43781 -
2019-12-24 22:12:25 +00:00
florian
a20209e691 + tf_init_final_units_by_calls
* arm-embedded generates direct calls for unit init/final now as well

git-svn-id: trunk@43771 -
2019-12-24 16:14:30 +00:00
florian
be0054eeb4 * fixed output of line numbers/columns with -vR
git-svn-id: trunk@43769 -
2019-12-24 16:14:29 +00:00
florian
ef87879402 * common naming for fpu_none string
git-svn-id: trunk@43768 -
2019-12-24 16:14:28 +00:00
florian
cbec738829 * last commit was not complete/earlier version committed
git-svn-id: trunk@43767 -
2019-12-23 23:07:26 +00:00
florian
abb79553d2 * optimize case statements with a single branch into if statements (ord const only)
git-svn-id: trunk@43766 -
2019-12-23 22:42:53 +00:00
florian
cb44d7d4e2 * some cleanup
git-svn-id: trunk@43765 -
2019-12-23 21:52:06 +00:00
florian
4de6b3e6b9 * do not crash when an unsupported code page is encountered, resolves #35581
git-svn-id: trunk@43764 -
2019-12-23 21:44:50 +00:00
florian
2f374a37b7 * patch by Bart Broersma to allow to declare "LongInt = AnsiString" comparison
operator in non-macpas modes, resolves #29460

git-svn-id: trunk@43709 -
2019-12-22 22:06:26 +00:00
florian
b8b5d84108 * missing +')' added
git-svn-id: trunk@43707 -
2019-12-22 20:41:48 +00:00
florian
8465710329 + make use of mulx instruction, if available
git-svn-id: trunk@43706 -
2019-12-21 16:20:10 +00:00
florian
30927039a6 + MULX instruction
* change information for RORX corrected

git-svn-id: trunk@43705 -
2019-12-21 16:20:09 +00:00
svenbarth
0149d26adb * in PeepHoleOptPass1Cpu when an instruction contains a segment, don't replace the current instruction with the next, cause then we get an infinite loop when compiling on Win32 with -dTEST_WIN32_SEH -O4
git-svn-id: trunk@43704 -
2019-12-20 16:44:54 +00:00
svenbarth
1779011ab4 * fix typo in comment
git-svn-id: trunk@43703 -
2019-12-20 16:44:52 +00:00
florian
fe7d7aa1e7 * patch by Alfred to fix building on DragonFly OS, resolves #36450
git-svn-id: trunk@43696 -
2019-12-17 21:57:09 +00:00
florian
5f2410b871 * patch by J. Gareth Moreton to fix an ie 2018061400 on darwin
git-svn-id: trunk@43694 -
2019-12-16 21:15:57 +00:00
Jonas Maebe
0f57151d36 + recognise LLVM 9.0 (no changes needed compared to LLVM 8.0)
git-svn-id: trunk@43686 -
2019-12-14 17:15:27 +00:00
svenbarth
707f722531 * regenerate msg*.inc files after adding a new error message related to C blocks
git-svn-id: trunk@43685 -
2019-12-14 16:45:42 +00:00
svenbarth
8111e92e1f * rework syntax for cblocks: now a cblock directive is required
* additionally implicit calling conventions of cdecl or mwpascal now work as well
* adjusted tests
+ added tests

Note: the generator for packages/univint needs to be fixed, until then building on macOS will be broken

git-svn-id: trunk@43684 -
2019-12-14 16:45:38 +00:00
Jonas Maebe
c477816100 - removed LLVM support for clang < 7.0 and Xcode < 10.0: those versions
contain various bugs and can't even complete "make all", so there is no
    point in keeping them
   o changed default LLVM target version to 7.0

git-svn-id: trunk@43682 -
2019-12-14 14:59:05 +00:00
Jonas Maebe
a352a12bb4 * use value_real rather than value_curency when writing currency
realconstnodes (fixes tcurrency1, tw33439 and tw36179 with LLVM)
   o we need to load the fpu representation of the currency values,
     not the scaled currency value

git-svn-id: trunk@43681 -
2019-12-14 14:11:12 +00:00
svenbarth
22ce9006ab * fix number of last parser_* message entry
git-svn-id: trunk@43677 -
2019-12-11 22:43:03 +00:00
svenbarth
36e32ee607 * more correct method names (based on patch by Blaise.ru)
git-svn-id: trunk@43676 -
2019-12-11 22:43:00 +00:00
svenbarth
46a366d6ae * clear up file comment (based on patch by Blaise.ru)
git-svn-id: trunk@43675 -
2019-12-11 22:42:56 +00:00
svenbarth
bf5d75e594 * move the common sequence to build a VMT for an objectdef into a separate procedure (based on a patch by Blaise.ru)
git-svn-id: trunk@43674 -
2019-12-11 22:42:53 +00:00
svenbarth
a6354741e6 * TVMTBuilder.build_interface_mappings does not need to be public (based on patch by Blaise.ru)
git-svn-id: trunk@43673 -
2019-12-11 22:42:48 +00:00
pierre
8c2aa32683 * Remove duplicate ibextraheader handling.
* Move SymAnsiStr boolean setting inside parseextraheader function.
  * Only accept same CurrentPPULongVersion in parseextraheader function.

git-svn-id: trunk@43672 -
2019-12-11 17:14:27 +00:00
florian
ef7e4f6f62 * fix J. Gareth Moreton to resolve #36389
git-svn-id: trunk@43670 -
2019-12-09 22:00:45 +00:00
florian
599e2df71f o patch by J. Gareth Moreton, resolves r36371:
* This patch makes some minor improvements to the cross-platform code that deals with jump optimisations.
      More specifically, it attempts to do more in a single pass which has the nice side-effect of
      fixing a couple of minor mistakes (in some situations, it would erroneously remove an alignment entry).
      - Most improvements are with dealing with Jcc/JMP pairs and their equivalents on other platforms, by
      collapsing label clusters and stripping dead code as soon as it has enough information to do so, and being
      more intelligent before calling Continue to see if another optimisation can be performed in the same sitting.

      - RemoveDeadCodeAfterJump is now a function that returns True if a jump was found among the dead code,
      thus allowing the ability to flag the peephole optimizer for another iteration of Pass 1 - the
      destination label may have appeared earlier in the code and become dead as a result of the removal
      of the jump, thus opening up new optimisations with instructions that sat either side of the label.

      - Preliminary tests show that it does sometimes reduce the number of passes required to optimise a subroutine
      under -O3.

git-svn-id: trunk@43668 -
2019-12-09 20:58:31 +00:00
florian
2a315df80c * check in CheckLive* if a register allocator is initialized for a certain register type
git-svn-id: trunk@43665 -
2019-12-08 22:22:17 +00:00
florian
ac6e4f59c6 * better error recovery, resolves #36397
git-svn-id: trunk@43653 -
2019-12-05 20:46:50 +00:00
florian
266daa62f1 * updated arm linker script as proposed by Alfred, resolves #36395
git-svn-id: trunk@43651 -
2019-12-05 20:07:16 +00:00
Jonas Maebe
54d3c26e27 * renamed abi_linux386_sysv to abi_i386_dynalignedstack, and also use it
for Darwin-based i386 platforms

git-svn-id: trunk@43650 -
2019-12-05 19:38:01 +00:00
florian
0cb85eef9b * more currency fixes, should resolve #36176
git-svn-id: trunk@43635 -
2019-12-03 19:31:50 +00:00
pierre
c87facbae1 Use PInt64(@value_currency)^ construct to avoid internal error when starting from 3.0.4 ppcarm compiler
git-svn-id: trunk@43634 -
2019-12-03 16:05:30 +00:00
pierre
91e550edb6 Remove assigned but unused local variable i64 in taddnode.pass_typecheck_internal as suggested by Ondrej Pokorny
This also solves the "Invalid TypeCast Error" in rtl-objpas when compiled with -CriotR option.

git-svn-id: trunk@43631 -
2019-12-02 23:11:21 +00:00
svenbarth
927c91e093 * fix for Mantis #36388: correctly handle generic constraints when looking for helpers
git-svn-id: trunk@43629 -
2019-12-02 22:29:34 +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
80a4a01f12 + add a method to tdef to initialize the defid from within a constructor
git-svn-id: trunk@43624 -
2019-12-02 06:58:47 +00:00
florian
b8a78b135c * simplified and improved TX86AsmOptimizer.RegModifiedByInstruction
git-svn-id: trunk@43623 -
2019-12-01 22:15:48 +00:00
florian
86d8e79e86 * fix some currency issues, resolves #33963 and #36179
git-svn-id: trunk@43620 -
2019-12-01 20:24:00 +00:00
florian
f2a8b8ad6a * adapt register if the size of the paraloc and the register differ, resolves #34409
git-svn-id: trunk@43617 -
2019-11-30 20:37:55 +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
pierre
4e4f55ac0e Comparison nodes are always in LOC_REGISTER, never in LOC_JUMP for riscv32 or riscv64 CPUs
git-svn-id: trunk@43614 -
2019-11-29 23:28:05 +00:00
pierre
92b0ea7d02 Add explicit smallint typecast to first marameter of SarSmallint call to avoid range check errors
git-svn-id: trunk@43613 -
2019-11-29 23:26:45 +00:00
florian
d8f1aacd78 * better error recovery, resolves #36377
git-svn-id: trunk@43612 -
2019-11-29 22:13:17 +00:00
florian
4525edd9f7 * patch by J. Gareth Moreton: x86 implementation of RegModifiedByInstruction, resolves #36376
git-svn-id: trunk@43611 -
2019-11-29 21:57:53 +00:00
florian
3889529e45 * unified internalerror, resolves #36378
git-svn-id: trunk@43610 -
2019-11-29 21:06:12 +00:00
pierre
fb33da5f41 Change parameter type to tcgint for is_imm12 and is_lui_imm functions to avoid range check errors
git-svn-id: trunk@43609 -
2019-11-29 10:31:31 +00:00
pierre
7405ae2758 Fix trv32notnode, by using same code as for riscv64 CPU
git-svn-id: trunk@43607 -
2019-11-28 22:34:04 +00:00
pierre
3db08d28e9 Set default stack size for i8086-embedded target: 16384 for far data model, and 2048 for other memory models
git-svn-id: trunk@43604 -
2019-11-28 14:50:55 +00:00
pierre
a9bb9f7310 Add '.module nomips16' at assembly entry for mips/mipsel unless -a5 option is used
git-svn-id: trunk@43600 -
2019-11-27 22:56:35 +00:00
pierre
ba73f7376f Also accept -a5 for older binutils for mips and mpisel cpus
git-svn-id: trunk@43599 -
2019-11-27 22:54:47 +00:00
pierre
01fbad64b7 Use defined(aarch64) instead of defined(cpuaarch64) for FPC_HAS_INTERNAL_ABS_INT64
git-svn-id: trunk@43598 -
2019-11-27 22:15:23 +00:00
florian
7000d82dcd * do not convert cmp 0,... into test ...,... before the post pass of the peephole optimizer
as this conversion might result in missing further optimizer opportunities

git-svn-id: trunk@43596 -
2019-11-26 22:09:34 +00:00
florian
7e6eeebdf0 o patch by J. Gareth Moreton, seeks to improve maintainability, safety and efficiency
in the peephole optimizer by slightly modifying some function headers based
    on their intended purpose, resolves #36353
    * Non-virtual methods and class methods that don't need to access any fields from
      the current object are now static methods, thus removing the hidden "Self"
      parameter and reducing overhead. This includes a large number of
      frequently-used functions such as SkipEntryExitMarker and SuperRegistersEqual.
    * GetNextInstruction, GetLastInstruction, SkipEntryExitMarker and
      SkipLabels have had their 'var' parameter changed to an 'out' parameter because
      they shouldn't depend on its input value. This will cause the compiler to throw warnings
      if you start using the value without initialising it first, and may open up optimisation
      opportunities in the future (e.g. storing written values in a temporary register
      and only writing it to the actual variable when the routine exits).

git-svn-id: trunk@43595 -
2019-11-26 22:09:33 +00:00
Jonas Maebe
5800ac6213 * fix conversion from Objective-C class/protocol to tvarrec (store in
vPointer) (mantis #36362)

git-svn-id: trunk@43594 -
2019-11-26 21:24:56 +00:00
florian
cf0716123c * avoid overflow error
git-svn-id: trunk@43593 -
2019-11-26 19:39:04 +00:00
florian
af107ca8fe o patch by J. Gareth Moreton, resolves #36355
+ This patch serves to extend the JMP -> RET optimisation in OptPass2JMP by also doing the same
      for JMP -> MOV/RET, since there are often cases where the result (e.g. EAX) is set just
      prior to the function exiting.
    * RemoveDeadCodeAfterJump will now drop out if it detects SEH information -
      this stops exception information from being stripped if it is called on the final RET instruction.

git-svn-id: trunk@43592 -
2019-11-25 21:15:41 +00:00
florian
fb4b1cbf35 * warn only in delphi mode if an explicit enumeration value exceeds the range, relaxes r43191
git-svn-id: trunk@43590 -
2019-11-25 20:58:20 +00:00
svenbarth
97eefb6ac3 - the error recovery handling is no longer required
git-svn-id: trunk@43588 -
2019-11-25 20:28:29 +00:00
svenbarth
5b71ba2a9b * treat a missing genericdef with no symname set as an internal error
git-svn-id: trunk@43587 -
2019-11-25 20:28:26 +00:00
svenbarth
ef6c9e930b * correctly handle the genericdef being a procdef, otherwise no code will be generated (and no error either :/ )
+ added test

git-svn-id: trunk@43586 -
2019-11-25 20:28:23 +00:00
Jonas Maebe
0802edb710 * fix Linux/i386 and Win32 after r43578
git-svn-id: trunk@43583 -
2019-11-25 07:55:57 +00:00
Jonas Maebe
ec227bb759 * fixed safecall for non-LLVM after r43578
git-svn-id: trunk@43580 -
2019-11-24 21:26:22 +00:00
florian
c6116258fd o patch by J. Gareth Moreton:
* adds an extra optimisation to "PostPeepholeOptMov" in compiler/x86/aoptx86.pas:
      If the instruction "MOV REG, -1" (Intel notation) is found, where REG is either
      a 32- or 64-bit register, it is changed to "OR REG, -1" instead.
      The effect is the same and takes exactly the same speed to execute, but the encoding is much smaller.
      As it cause false data dependencies, it is only applied in -Os mode

      For 16-bit registers, only AX is optimised this way because it has its own encoding for OR that takes fewer bytes.

git-svn-id: trunk@43579 -
2019-11-24 20:26:02 +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
florian
acdff47554 + optimize integer expressions like 2*x*4; which were not found by the node simplifier yet
git-svn-id: trunk@43577 -
2019-11-24 20:21:33 +00:00
florian
94b728005d * more RemoveCurrentP usage
git-svn-id: trunk@43576 -
2019-11-24 19:51:04 +00:00
florian
9e307f5c3a - removed code not used for years
git-svn-id: trunk@43575 -
2019-11-24 19:50:27 +00:00
florian
d444f750f9 * factored out TX86AsmOptimizer.OptPass1Cmp
* fixed it
  * activated it for x86-64

git-svn-id: trunk@43574 -
2019-11-24 16:33:50 +00:00
florian
dea1855126 o patch by J. Gareth Moreton, resolves #36352:
* The supplied patch cleans up some vestigial code from the i386 peephole
      optimizer that has since been superseded by the jump optimisations over
      at #36271.
    * The PrePeepholeOptsCPU method has had a minor restructuring to better
      handle the rare case where InsContainsSegRef() returns True and
      p becomes something that is no longer an instruction (it ultimately
      removes a conditonal check and some overhead from repeated function calls).

git-svn-id: trunk@43573 -
2019-11-24 16:12:02 +00:00
florian
bdd36d20ac * patch by Alfred: remove superfluous linker script entry, resolves #36345
git-svn-id: trunk@43570 -
2019-11-24 12:16:29 +00:00
svenbarth
1abc9c1fe7 * when specializing a routine all nested specializations must go to the para- or localsymtable as otherwise the symbol can't be found to be registered
git-svn-id: trunk@43568 -
2019-11-24 00:04:31 +00:00
svenbarth
6edf6cad2c * also check for Nil symtables in tsymtable.includeoption
git-svn-id: trunk@43567 -
2019-11-24 00:04:27 +00:00
svenbarth
d79e2ee9da * also store, reset and restore the current module's procinfo
git-svn-id: trunk@43566 -
2019-11-24 00:04:23 +00:00
pierre
c882828fd0 Minimalist change to avoid Invalid Typecast error on class when compiled with '-CriotR -O2' for i386-go32v2 target
git-svn-id: trunk@43565 -
2019-11-23 22:44:30 +00:00
pierre
8ea92a8280 Use correct macro to for 64-bit riscv CPU
git-svn-id: trunk@43561 -
2019-11-22 21:29:19 +00:00
Jonas Maebe
ff919184d8 * restored original behaviour of shl/shr constant evaluation outside
inline statements
   o fixes compilation of pasjpeg with -Cr

git-svn-id: trunk@43560 -
2019-11-22 21:12:00 +00:00
pierre
17c422c3f2 Patch by Gareth Moreton.
* TAOptObj.CollapseZeroDistJump: Change hp1 to local variable,
     initialized as p.next, to avoid problems of dangling pointers
     revealed by use of "-CriotR -O2" compilation arguments.

git-svn-id: trunk@43554 -
2019-11-22 09:10:32 +00:00
florian
98226d33b7 * do not optimize inline nodes which are part of call node which has an init and/or cleanup block, resolves #36323
git-svn-id: trunk@43553 -
2019-11-21 22:15:06 +00:00
svenbarth
3e9bfedbc4 * ensure that the required functions are referenced for Win32 SEH for packages as well
git-svn-id: trunk@43552 -
2019-11-21 21:45:21 +00:00
svenbarth
40c11baaac * use a different name for the packages' entry point and use _DLLMainCRTStartup as an alias to avoid problems with the C-prefix
git-svn-id: trunk@43551 -
2019-11-21 21:45:18 +00:00
svenbarth
bb3b1b06a7 * fix condition for including a unit's object files or not when compiling with packages
git-svn-id: trunk@43550 -
2019-11-21 21:45:15 +00:00
svenbarth
2a1d26cc90 * use translateable error messages for undefined symbols and also report in which object file the symbol was first found
git-svn-id: trunk@43549 -
2019-11-21 21:45:11 +00:00
svenbarth
1e66b2464a * regenerate msg*.inc files after adding new error messages for undefined symbols
git-svn-id: trunk@43548 -
2019-11-21 21:45:08 +00:00
svenbarth
f28ac2bfc6 + add error messages for undefined symbols (both with a known object file and without)
git-svn-id: trunk@43547 -
2019-11-21 21:45:04 +00:00
svenbarth
cd7e3f354b + add a description for the link_e_comdat_selection_differs message
git-svn-id: trunk@43546 -
2019-11-21 21:45:01 +00:00
svenbarth
4b3ce0c023 * the symbol of the interface wrapper function needs to be considered as referenced as well
git-svn-id: trunk@43545 -
2019-11-21 21:44:57 +00:00
svenbarth
0a915e883e * keep track of static symbols that a global function references, as those must now be exported from a dynamic package as well if the function can potentially be inlined
git-svn-id: trunk@43544 -
2019-11-21 21:44:53 +00:00
svenbarth
2e259ee3cc * the VMT of the exception class needs to be referenced indirectly
git-svn-id: trunk@43543 -
2019-11-21 21:44:48 +00:00
svenbarth
a041f899d3 * when creating the static field of a generic, insert it into the generic instead of the global symtable as it isn't really used anyway
git-svn-id: trunk@43542 -
2019-11-21 21:44:43 +00:00
svenbarth
06fc84037c * ensure that generic symbols are not tried to be exported
git-svn-id: trunk@43541 -
2019-11-21 21:44:40 +00:00
svenbarth
da1312698b * correctly check for the system unit
git-svn-id: trunk@43540 -
2019-11-21 21:44:36 +00:00
svenbarth
6151f7af29 * check the localswitches of the node instead of the global ones
git-svn-id: trunk@43539 -
2019-11-21 21:44:33 +00:00
svenbarth
6f584333e5 * symbols called by g_call might need to be imported from dynamic packages as well
git-svn-id: trunk@43538 -
2019-11-21 21:44:29 +00:00
svenbarth
85637ad5fa * register constant symbols
git-svn-id: trunk@43537 -
2019-11-21 21:44:26 +00:00
svenbarth
f4d96906c2 * reference FPC_ABSMASK_SINGLE/-DOUBLE using the indirect symbol if required for dynamic packages
git-svn-id: trunk@43536 -
2019-11-21 21:44:22 +00:00
svenbarth
f13200d68b * restore localswitch settings after the initialization and finalization code was generated
git-svn-id: trunk@43535 -
2019-11-21 21:44:19 +00:00
svenbarth
276f5bdef8 * ensure that nothing assembly related is generated for generics when a typed constant (this also includes local variable initializations) are parsed
git-svn-id: trunk@43534 -
2019-11-21 21:44:16 +00:00
svenbarth
04984e9af9 * also generate indirect symbols for AB_PRIVATE_EXTERN symbols as these might be used from a unit in another package due to inlining
git-svn-id: trunk@43533 -
2019-11-21 21:44:12 +00:00
florian
f5caa9940b * make use of RemoveCurrentP
git-svn-id: trunk@43532 -
2019-11-21 20:19:49 +00:00
florian
61bf55e0fe * define renamed
git-svn-id: trunk@43531 -
2019-11-21 19:58:48 +00:00
pierre
ff415ba39c Fixes by Gareth Moreton for problems exposed by use of -CriotR option
git-svn-id: trunk@43529 -
2019-11-21 10:00:20 +00:00
pierre
a61a0cce4c Use same entered_paren local variable as 64-bit counterpart and fix register names
git-svn-id: trunk@43522 -
2019-11-20 22:44:30 +00:00
florian
6248a127ca * write assembler optimizer messages into output file if DEBUG_AOPTOBJ is set
git-svn-id: trunk@43521 -
2019-11-20 22:12:28 +00:00
florian
40c54e9d37 * do not generate conditional jump with full references
+ more assembler optimizer output

git-svn-id: trunk@43520 -
2019-11-20 22:12:27 +00:00
florian
da54d0e8f7 + patch by J. Gareth Moreton: new method TAOptObj.CanDoJumpOpts and arm specific implementation
git-svn-id: trunk@43519 -
2019-11-20 22:12:27 +00:00
florian
f505822ab5 o patch by J. Gareth Moreton:
* fix jump optimizer for MIPS(EL).
    + New method called "MakeUnconditional" introduced that can do platform-specific changes

git-svn-id: trunk@43518 -
2019-11-20 22:12:26 +00:00
pierre
7eb0be6127 Fix invalid typecast revealed by -CriotR by changing order of terms in boolean expression
git-svn-id: trunk@43515 -
2019-11-19 22:47:39 +00:00
florian
91f3f022fe * MM registers which might not be changed can be still used in 3 op mathematical operations as source
git-svn-id: trunk@43509 -
2019-11-17 14:48:45 +00:00
florian
2d3ef8b4bc * pushf/push cs on all platforms when directly calling an interrupt procedure, with the
recent changes needed for 16 byte stack alignment it should work now

git-svn-id: trunk@43508 -
2019-11-17 14:16:32 +00:00
florian
a7e72617a6 * fix stackmisalignment calculation to take care of pushf/push cs, before r43503,
it was correct by coincidence

git-svn-id: trunk@43506 -
2019-11-17 09:14:54 +00:00
Jonas Maebe
acbb456ae5 * fixed constant evaluation of shr of negative values after r43497
(tshlshr compiled with -O3)

git-svn-id: trunk@43504 -
2019-11-16 17:58:06 +00:00
florian
240acc10f8 * fix calculation of stackmisalignment for interrupt procedures as pointed out by Jonas
git-svn-id: trunk@43503 -
2019-11-16 17:46:39 +00:00
florian
60b3296594 * relax conditions in tcallnode.optimize_funcret_assignment, resolves #36279
git-svn-id: trunk@43501 -
2019-11-16 17:16:16 +00:00
florian
52cc02aa3b * values passed to const parameters are not limited to registers and constants
git-svn-id: trunk@43500 -
2019-11-16 17:16:15 +00:00
Jonas Maebe
4fd670c6ec * fixed missing masking of values after shifting them during inline
evaluation
   o also only mask values when performing a constant evaluation of
     "0 shl/shr x" during inline evaluation (just like when evaluating other
     shl/shr operations)

git-svn-id: trunk@43497 -
2019-11-16 14:27:47 +00:00
florian
851accbb4b * cse adjusted
git-svn-id: trunk@43496 -
2019-11-16 14:07:59 +00:00
florian
13ab35e3ef * fix usage of ppumove generated shared libraries
git-svn-id: trunk@43495 -
2019-11-16 14:07:32 +00:00
florian
a969097a80 * optimization Move removed 4 fixed
git-svn-id: trunk@43493 -
2019-11-16 14:04:02 +00:00
florian
798a1b6219 * -P option for ppumove
git-svn-id: trunk@43487 -
2019-11-16 11:03:53 +00:00
florian
d4f0658c02 * disable condition jump optimization on MIPS for now for the time being
git-svn-id: trunk@43486 -
2019-11-15 20:50:17 +00:00
Jonas Maebe
c22d39bcdf * fixed linking on NetBSD/m68k after r36168
* fixed linking on target for NetBSD/m68k, and when cross-compiling for
    Darwin from Windows after r36168
  * enabled the use of the "-filelist" linker option for Darwin in all
    cases (mantis #36273)

git-svn-id: trunk@43485 -
2019-11-15 20:31:41 +00:00
michael
43a09af7f2 * Fix overflow of compiler messages (bug id 27973)
git-svn-id: trunk@43481 -
2019-11-15 15:37:58 +00:00
pierre
a09e40945c Regenerate all Makefile's after commit #43472
git-svn-id: trunk@43478 -
2019-11-15 14:47:02 +00:00
florian
bf24882c33 * patch by J. Gareth Moreton: fix building for armv6m after r43441
git-svn-id: trunk@43466 -
2019-11-14 21:38:21 +00:00
florian
87b3b089d6 * i386: more clean up of TCPUAsmOPtimizer.PeepHoleOptPass1Cpu
git-svn-id: trunk@43465 -
2019-11-14 21:26:48 +00:00
florian
632f13c47a * i386 does not use anymore its own assembler optimizer loops
git-svn-id: trunk@43464 -
2019-11-14 21:14:01 +00:00
florian
0ab0eefae0 + separate JUMP_DEBUG define
git-svn-id: trunk@43463 -
2019-11-14 21:14:00 +00:00
florian
d82335bf9a * do not remove cfi_endproc after jmps
git-svn-id: trunk@43462 -
2019-11-13 21:13:05 +00:00
florian
e1433adc2e * check in the internal assembler for references with incorrect use of RIP
+ test

git-svn-id: trunk@43461 -
2019-11-13 20:47:42 +00:00
florian
6bed497c7c * be carefully with references using RIP when doing LeaOp2Op optimizations
git-svn-id: trunk@43460 -
2019-11-13 20:47:40 +00:00
pierre
9b3447a6a4 Fix ppudump after commit #43450
git-svn-id: trunk@43458 -
2019-11-13 16:59:26 +00:00
florian
ae6b204c94 + added comments for LeaOp2Op
git-svn-id: trunk@43457 -
2019-11-12 22:10:01 +00:00
florian
7ee0ad4d63 + LeaOp2Op optimization
* replaced some manual removels of p by RemoveCurrentP calls

git-svn-id: trunk@43456 -
2019-11-12 22:04:23 +00:00
florian
5c0a5b73c7 * patch by J. Gareth Moreton: fix compilation with debug info after r43441 and friends, resolves #36299
git-svn-id: trunk@43455 -
2019-11-12 20:03:19 +00:00
florian
1d6e719e38 * improve ShlAddLeaSubIncDec2Lea to take care of foldable LEAs
git-svn-id: trunk@43453 -
2019-11-11 22:08:17 +00:00
florian
83a11c2a7d * patch by J. Gareth Moreton to clean up TX86AsmOptimizer.OptPass2Jcc, resolves #36295
git-svn-id: trunk@43452 -
2019-11-11 21:29:13 +00:00
Jonas Maebe
2f914ee2d8 * packed tabstractvarsym.addr_taken/different_scope fields into a set
git-svn-id: trunk@43450 -
2019-11-11 09:26:51 +00:00
florian
5f3050961f * load left properly into a register in tx86addnode.second_addordinal, resolves #36287
git-svn-id: trunk@43449 -
2019-11-10 21:45:57 +00:00
florian
7464c88003 * fix and improve MovImul2Imul: we cannot insert the move target into imul if the imul is 64 bit and the mov 32 bit as
we cannot ensure that the upper 32 bits of the move target are really clear

git-svn-id: trunk@43447 -
2019-11-10 21:09:06 +00:00
florian
4b455600b8 * swapped decrefs and StripLabelFast as proposed by Gareth on the mailing list
git-svn-id: trunk@43445 -
2019-11-10 18:23:50 +00:00
florian
7747c5fc27 -- Zusammenführen von r43307 bis r43443 in ».«:
D    tests/webtbs/tw32219.pp
U    compiler/i386/i386att.inc
U    compiler/i386/i386atts.inc
U    compiler/i386/i386int.inc
U    compiler/i386/i386nop.inc
U    compiler/i386/i386op.inc
U    compiler/i386/i386prop.inc
U    compiler/i386/i386tab.inc
U    compiler/i8086/i8086att.inc
U    compiler/i8086/i8086atts.inc
U    compiler/i8086/i8086int.inc
U    compiler/i8086/i8086nop.inc
U    compiler/i8086/i8086op.inc
U    compiler/i8086/i8086prop.inc
U    compiler/i8086/i8086tab.inc
U    compiler/x86/x86ins.dat
U    compiler/x86_64/x8664ats.inc
U    compiler/x86_64/x8664att.inc
U    compiler/x86_64/x8664int.inc
U    compiler/x86_64/x8664nop.inc
U    compiler/x86_64/x8664op.inc
U    compiler/x86_64/x8664pro.inc
U    compiler/x86_64/x8664tab.inc
U    tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von r42706 bis r43443 in ».«:
 U   .

git-svn-id: trunk@43444 -
2019-11-10 16:44:34 +00:00
florian
47bb71efc4 * unneeded changes reverted
git-svn-id: branches/tg74/avx512merge@43443 -
2019-11-10 16:41:53 +00:00
florian
e1e8986462 * patch by J. Gareth Moreton, issue #36271, part 3: support for the other architectures
git-svn-id: trunk@43441 -
2019-11-10 16:11:40 +00:00
florian
2d295a3816 * patch by J. Gareth Moreton, issue #36271, part 2: x86 specific rework of the jump optimizer
git-svn-id: trunk@43440 -
2019-11-10 16:11:39 +00:00
florian
47dcc5b05b * patch by J. Gareth Moreton, issue #36271, part 1: general rework of the jump optimizer
git-svn-id: trunk@43439 -
2019-11-10 16:11:38 +00:00
Jonas Maebe
d23c7980aa * properly perform (or not) range/overflow checking when performing constant
propagation into inlined routines, regardless of the range/overflow
    checking state at the caller site

git-svn-id: trunk@43436 -
2019-11-10 12:00:05 +00:00
florian
88a8871c62 * read more types of references properly
git-svn-id: trunk@43433 -
2019-11-09 21:58:31 +00:00
florian
79dfd9fb51 + MIPS: take care of setnoat
git-svn-id: trunk@43432 -
2019-11-09 21:58:30 +00:00
florian
99ce957111 * fixed default value for progbits
git-svn-id: trunk@43430 -
2019-11-09 18:32:36 +00:00
florian
137f392c66 * parameters declared as out must be initialized
git-svn-id: trunk@43429 -
2019-11-09 18:29:14 +00:00
florian
40bbb28fd2 * do not write section flags/progbits for .data, .rodata .data.norel as the compiler will ignore them anyways and warn about it
git-svn-id: trunk@43428 -
2019-11-09 18:28:30 +00:00
florian
f20e6ff323 * update generic linker script
git-svn-id: trunk@43426 -
2019-11-09 16:58:58 +00:00
florian
d275e7a7e6 * removed accidently committed debug statement
git-svn-id: trunk@43413 -
2019-11-07 21:12:47 +00:00
florian
c8f746b881 * do not allocate an extra register for some integer operations if not needed
git-svn-id: trunk@43412 -
2019-11-07 21:08:08 +00:00
svenbarth
b0ac0ddcc9 + add support for the IsManagedType() intrinsics which reports for a type (or variable) whether it needs initialization/finalization
+ added tests

git-svn-id: trunk@43409 -
2019-11-06 23:04:52 +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
tg74
1454e8b29d new avx512-opcodes VBMI2,VNNI,BITALG ...
git-svn-id: branches/tg74/avx512merge@43406 -
2019-11-06 19:51:01 +00:00