Commit Graph

22860 Commits

Author SHA1 Message Date
florian
b7afb2431c * do not allow constraints in headers of procedure implementations in delphi mode, resolves #36584
* better error message if a constraint is found at a wrong location

git-svn-id: trunk@44174 -
2020-02-14 20:56:55 +00:00
svenbarth
c4f3f7f453 * only resolve a dummy symbol if it is a type symbol (thus truly a dummy symbol)
+ added tests

git-svn-id: trunk@44172 -
2020-02-14 16:49:07 +00:00
svenbarth
20698bb36f * regenerate msg*.inc after last commit
git-svn-id: trunk@44171 -
2020-02-14 16:49:04 +00:00
svenbarth
147559349b * fix for Mantis #36652: gracefully handle the error if one tries to implement a method of a type from another unit
+ added test

git-svn-id: trunk@44170 -
2020-02-14 16:48:58 +00:00
florian
3279e63351 * patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass2MOV after DeepMov changes, second part of #36670
git-svn-id: trunk@44166 -
2020-02-13 20:53:39 +00:00
florian
251b18b966 * do not fold constants if the resulttypes do not match, improved fix for #tw26587
git-svn-id: trunk@44165 -
2020-02-13 20:34:27 +00:00
florian
3a5eb0ec59 * patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass1MOV after DeepMov changes, first part of #36670
git-svn-id: trunk@44164 -
2020-02-13 20:20:10 +00:00
florian
fd4fb5fa19 * patch by Christo Crause: combine code paths for avr1 and avrtiny when converting lds/sts to in/out, resolves #36697
git-svn-id: trunk@44163 -
2020-02-12 20:43:13 +00:00
florian
f632e2e7be * simplified TX86AsmOptimizer.OptPass1Movx
git-svn-id: trunk@44162 -
2020-02-12 20:23:06 +00:00
florian
21565c2284 * fixed Mov2Movz optimization
git-svn-id: trunk@44161 -
2020-02-12 19:26:52 +00:00
florian
c6350e2903 * patch by J. Gareth Moreton: processor-aware MOVZX optimisation cleanup, part one of #36687
git-svn-id: trunk@44153 -
2020-02-11 20:56:20 +00:00
yury
39c48f0d01 * Fixed r43577 for cases when the size of the new result of a simplified node after typecheckpass is smaller than the size of the original node's result. This caused internal errors or invalid assembly in some cases. Issue #36587.
git-svn-id: trunk@44151 -
2020-02-11 12:49:12 +00:00
florian
e7d2c93ca7 * patch by J. Gareth Moreton: deadstore removal improvement, resolves #36669
git-svn-id: trunk@44147 -
2020-02-10 20:48:45 +00:00
pierre
40a6059143 Modify code to avoid error when compiling with -CriotR option
git-svn-id: trunk@44145 -
2020-02-10 09:37:53 +00:00
florian
991ce83a2b * patch by J. Gareth Moreton: conditional Jump Inversion stoploop variable, resolves #36680
git-svn-id: trunk@44144 -
2020-02-09 20:57:59 +00:00
florian
12d015a935 * patch by J. Gareth Moreton: CMOV extensions: frame/stack pointer relative references are always valid, resolves #36675
git-svn-id: trunk@44141 -
2020-02-09 17:39:50 +00:00
florian
2135b9b724 * for avr1, do not save registers during an interrupt procedure, as it has no memory to store them
git-svn-id: trunk@44139 -
2020-02-09 14:35:56 +00:00
florian
84cfa8d9b0 * AVR: for avr1 lds/sts must be converted to in/out as well if possible
git-svn-id: trunk@44138 -
2020-02-09 13:55:25 +00:00
florian
297d6e2c60 * patch by Christo Crause: more avr1 controllers and remove attiny28 from avr25 makefile list, resolves #36686
git-svn-id: trunk@44136 -
2020-02-09 10:51:14 +00:00
florian
a905a074b0 * AVR: decide after compiler if a certain subroutine is suitable for avr1, if not, replace it by sleep and warn
git-svn-id: trunk@44133 -
2020-02-08 22:05:21 +00:00
florian
dea63e3d61 * AVR: attiny28 is an avr1 CPU
git-svn-id: trunk@44132 -
2020-02-08 22:05:21 +00:00
florian
04ad607bb4 * patch by Christo Crause: more AVR controllers, resolves #36683
git-svn-id: trunk@44130 -
2020-02-08 20:43:22 +00:00
florian
5040e31f11 * patch by Christo Crause: add missing atmega-PB controllers, resolves #36667
git-svn-id: trunk@44128 -
2020-02-07 19:48:46 +00:00
florian
e033269deb * patch by Christo Craus to reorder the avr controllers for better overview, resolves #36662
git-svn-id: trunk@44124 -
2020-02-06 21:10:09 +00:00
florian
3de193467d * reverted r44119
git-svn-id: trunk@44123 -
2020-02-06 20:24:59 +00:00
Tomas Hajny
8de6066b95 + added possibility to list supported modeswitches using -im and documented it in help pages
git-svn-id: trunk@44120 -
2020-02-05 22:37:43 +00:00
florian
2d47013cd1 * patch by J. Gareth Moreton: fixes internal error 200405231 with inline, resolves #35590
git-svn-id: trunk@44119 -
2020-02-05 20:35:03 +00:00
Tomas Hajny
f4702ee139 * added information about -M allowing to specify modeswitches
git-svn-id: trunk@44115 -
2020-02-04 22:28:23 +00:00
florian
4fe21a8e1a * patch by Christo Crause: board aliases to onboard controllers, resolves #36659
git-svn-id: trunk@44111 -
2020-02-04 21:14:14 +00:00
pierre
9c067709f8 Fix invalid typecast revealed by -CriotR option
git-svn-id: trunk@44108 -
2020-02-03 22:35:25 +00:00
florian
640fe9c290 * actually, with lds/sts avrtiny can load addresses up to 191
git-svn-id: trunk@44104 -
2020-02-02 20:41:28 +00:00
florian
36058ca4d4 * based on a patch by Christo Crause: more compiler fixes for avrtiny, resolves #36646
git-svn-id: trunk@44103 -
2020-02-02 20:35:29 +00:00
florian
bbcbd4eae1 * patch by J. Gareth Moreton, avoid illegal MovAdd2Lea and MovSub2Lea optimziations, resolves #36630
git-svn-id: trunk@44101 -
2020-02-02 19:49:47 +00:00
florian
91696d2cf3 - remote accidently committed printnode call
git-svn-id: trunk@44099 -
2020-02-02 19:17:22 +00:00
florian
53d2df07b6 * mark handled currencies correctly, so they are handled properly by simplify
git-svn-id: trunk@44098 -
2020-02-02 18:28:42 +00:00
florian
b777dc21d7 * fix PowerPC compilation
git-svn-id: trunk@44097 -
2020-02-02 15:20:28 +00:00
florian
9dd25d836d * include ti_nofini in tempinfostoreflags
git-svn-id: trunk@44096 -
2020-02-02 14:30:46 +00:00
florian
679c4454c4 * fixes copying of tcgpara
git-svn-id: trunk@44095 -
2020-02-02 14:30:45 +00:00
florian
1993c5d1ef * cosmetics
git-svn-id: trunk@44094 -
2020-02-02 14:30:44 +00:00
florian
0af71da9cc * armhf/armel aligns sections to 16 byte, so allow a maximum c alignment of 16
git-svn-id: trunk@44087 -
2020-02-01 22:31:12 +00:00
florian
2ea35e55b1 * patch by J. Gareth Moreton: x86 "OptPass1MOV" improvements - Part 2, resolves #36608
git-svn-id: trunk@44086 -
2020-02-01 21:31:56 +00:00
florian
5a87855b06 + might_have_sideeffects takes care of vo_volatile now (it is not exposed yet)
git-svn-id: trunk@44085 -
2020-02-01 20:30:15 +00:00
florian
77b54f501f * when optimizing boolean expressions, might_have_sideeffects is only relevant if the expression would be optimized away
git-svn-id: trunk@44084 -
2020-02-01 18:02:17 +00:00
florian
d479069f8c * might_have_sideeffects takes care of absolute
git-svn-id: trunk@44083 -
2020-02-01 18:00:38 +00:00
svenbarth
1407aa2b4b * fix for Mantis #36631: it's an error if a POINT after an array is not followed by an identifier
+ added tests

git-svn-id: trunk@44082 -
2020-02-01 17:51:46 +00:00
florian
00214406bc + patch by Christo Crause: Support for attiny10x controllers, resolves #36645
git-svn-id: trunk@44081 -
2020-02-01 15:54:57 +00:00
florian
6b47d9d9ed * safecall support is meanwhile generic, so enabled for all linux targets
git-svn-id: trunk@44076 -
2020-01-31 21:58:49 +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
svenbarth
c6a4d10f61 * for deciding whether to swap a generic's buffer use the module's flag instead of the def's
git-svn-id: trunk@44073 -
2020-01-30 21:49:07 +00:00
svenbarth
84dc6621cb * have the module keep track whether it was loaded from a PPU with a different endianess than the current host system
git-svn-id: trunk@44072 -
2020-01-30 21:48:15 +00:00
Jonas Maebe
254b85c352 + new pio_inline_forbidden flag to indicate that while parsing the
implementation the compiler determined the routine must never be
    inlined
   o difference with po_noinline: can also be set in the implementation
   o difference with pio_inline_not_possible: it indicates that e.g.
     LLVM must not inline the routine either

git-svn-id: trunk@44065 -
2020-01-29 22:21:17 +00:00
Jonas Maebe
b625afe800 * never inline routines that call get_frame (otherwise get_frame would return
the frame of the caller rather than of the current routine, which could
    cause e.g. stackframes to be missed in RTL helpers that are known to be
    only called from run time error routines)

git-svn-id: trunk@44064 -
2020-01-29 22:21:14 +00:00
Jonas Maebe
08f9ec98e5 * use same Windows platform name as clang
git-svn-id: trunk@44063 -
2020-01-29 22:21:10 +00:00
Jonas Maebe
592df7fa59 * disable cs_opt_regvar on all platforms when compiled for LLVM (LLVM does
that itself, our LLVM code generator can't handle it, and if it did then
    afterwards we would have to spill 90% of those register variables again
    to make them SSA)

git-svn-id: trunk@44062 -
2020-01-29 22:21:07 +00:00
Jonas Maebe
df6516c29f * fix internalerror if adding the object info for LLVM requires creating new defs
git-svn-id: trunk@44061 -
2020-01-29 22:21:03 +00:00
florian
43c83b3ae6 * improve LeaLea2Lea optimization
git-svn-id: trunk@44058 -
2020-01-29 21:35:26 +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
6a1c09bb43 * simplify type conversions of ordinal constants to currency
git-svn-id: trunk@44055 -
2020-01-28 21:19:05 +00:00
yury
45ffa40b71 * Removed inline since it is not supported with open array parameters.
git-svn-id: trunk@44054 -
2020-01-28 19:09:42 +00:00
yury
1b3a3a7983 * Removed lot of unused local vars. It is useful to turn on the notes in options. :)
git-svn-id: trunk@44053 -
2020-01-28 18:45:33 +00:00
yury
4a756a2d30 * r42239 broke the tw13948b test for aarch64. Fixed this and improved the test.
git-svn-id: trunk@44052 -
2020-01-28 17:50:20 +00:00
florian
1486ab7c70 * do not throw a warning about unreachable code if the responsible node was generated internally
git-svn-id: trunk@44051 -
2020-01-27 22:27:22 +00:00
florian
56d64b007f + in some language modes the loop counter is undefined after the loop by language definition
git-svn-id: trunk@44043 -
2020-01-26 20:13:18 +00:00
florian
3c18dee694 * take care of for loop counter read after loop
git-svn-id: trunk@44042 -
2020-01-26 20:13:18 +00:00
florian
22197641b8 * last commit fixing calculation of do_loopvar_at_end was not complete,
hopefully finally fixed

git-svn-id: trunk@44041 -
2020-01-26 20:13:17 +00:00
florian
74272975af * do_loopvar_at_end is not possible if the loop counter would overflow with
the last iteration

git-svn-id: trunk@44039 -
2020-01-26 15:35:03 +00:00
florian
670c61e760 * patch by Christo Crause: support for megaAVR 0 and tinyAVR 0/1, #36616, part 1/3
git-svn-id: trunk@44036 -
2020-01-26 14:35:26 +00:00
florian
6c71fd461d * avoid internalerror for dec/inc(...,v) with v>high(int64), resolves #35298
git-svn-id: trunk@44031 -
2020-01-24 21:39:07 +00:00
florian
993144b91b * patch by J. Gareth Moreton: x86 SUB and LEA optimisations, resolves #36622
git-svn-id: trunk@44030 -
2020-01-24 21:10:17 +00:00
florian
a807e18591 * patch by J. Gareth Moreton: x86 CMP/TEST/Jcc optimisations, resolves #36624
git-svn-id: trunk@44029 -
2020-01-24 20:41:11 +00:00
florian
d87a5cc9fb * take care of m_duplicate_names when checking for duplicate locals, resolves #33221
git-svn-id: trunk@44028 -
2020-01-23 21:32:09 +00:00
florian
7b4292c94e * patch by Robert Roland to support the RaspberryPi 2 as a bare metal embedded target, resolves #35236
git-svn-id: trunk@44027 -
2020-01-23 21:14:49 +00:00
florian
90a40ab9ca * fix for #32352: a unit does not need to be re-deref'ed if it just had been recompiled
git-svn-id: trunk@44026 -
2020-01-23 20:56:56 +00:00
florian
d2a059bd02 * patch by Christo Crause: avrtiny26 controller is not subarch avr25 but avr2, resolves #36620
git-svn-id: trunk@44021 -
2020-01-22 20:41:24 +00:00
florian
3ab8830b83 * patch by Christo Crause: Correct subarch for avrtiny series in compiler, resolves #36619
git-svn-id: trunk@44020 -
2020-01-22 20:34:43 +00:00
svenbarth
9a42625cfb * also allow by-value open array parameters for the tail recursion optimization
* adjusted test

git-svn-id: trunk@44012 -
2020-01-21 21:30:10 +00:00
svenbarth
4fc02d3d09 * enable tail recursion optimization also for const and constref open arrays
+ added test

git-svn-id: trunk@44011 -
2020-01-21 21:29:56 +00:00
marco
a640a8d21e * regenned msgtxt.inc
git-svn-id: trunk@44009 -
2020-01-21 13:21:59 +00:00
marco
eed0e52a64 * copyright date update, mantis 035903
git-svn-id: trunk@44008 -
2020-01-21 13:20:05 +00:00
florian
fc44c2d4c9 + insert alignments after break/goto/exit/continue jmp instructions, if it is
superfluous, the assembler optimizer will take care of it

git-svn-id: trunk@44007 -
2020-01-20 21:56:39 +00:00
florian
08c2afb0a4 * AVR: use CP ...,r1 instead of CPI ...,0 to enable all registers being used as first operand
git-svn-id: trunk@44006 -
2020-01-20 21:14:28 +00:00
yury
392fc0b637 * android: Changed additions to the linker script to prevent misalignment of the .data section. It fixes crash when linking using recent versions of LD where the "relro" option is default. Issue #35641.
* android: Always pass "-z relro" to the linker.

git-svn-id: trunk@44002 -
2020-01-19 20:31:54 +00:00
florian
16152cf948 * patch by J. Gareth Moreton: get rid of another pass through the assembler list by integrating OptReferences
into the post optimizer pass

git-svn-id: trunk@44001 -
2020-01-19 20:11:05 +00:00
florian
069e040e49 * do for-loop unrolling after for-loop simplification, resolves #36589
git-svn-id: trunk@43999 -
2020-01-19 18:21:12 +00:00
florian
429130fa34 * AVR: attiny can do post increment operations, so remove code working around this
git-svn-id: trunk@43996 -
2020-01-19 18:04:59 +00:00
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