Commit Graph

26984 Commits

Author SHA1 Message Date
florian
94cb1c3a49 * correctly name nested enum type debug symbols, resolves #40462 2023-10-10 23:16:31 +02:00
florian
a3f221e189 * allow set type to be a generic parameter, resolves #40453 2023-10-06 21:40:25 +02:00
Pierre Muller
d9ad6bdd1f Avoid troubles with exported directories 2023-10-03 10:14:04 +00:00
Frederic Kehrein
ba55932929 Fixing trying to consume ID for anonymous switch field 2023-09-28 22:42:49 +00:00
Pierre Muller
f1317e893d Update compiler related Makefile's 2023-09-28 11:22:55 +02:00
Pierre Muller
c335591b70 Generalize -DD option outside cycle
Add -DD option to LOCALOPT
  if FPC_VERSION is equal to PACKAGE_VERSION

  This is to avoid get different dates for
native compiler generated using 'make cycle'
versus cross-compilers.
2023-09-28 11:18:57 +02:00
Pierre Muller
e8a03ac8bc Try to fix crash in loongarch64 compiler
loongarch64 compiler has a specific routine,
  called fixupref that generates some instructions that are
  stored into a tasmlist given as an input parameter.
  This function returns a boolean,
  if the return value is false, the populated list gets
  sometimes discarded.
  This can lead to a later crash, because the unused
  and freed instructions might have been stored
  in live and live_end fields of the reginfo record
  used inside rgobj unit.

  The fix checks if any of the to be discarded instructions
  has been stored inside reginfo records,
  and resets the field in that case.

  The fix might need to be more general,
  because other parts of the compiler,
  like all optimization code, also remove
  instructions...
2023-09-26 18:18:04 +00:00
Pierre Muller
5e6e24ec08 Rename fields of tspillregsinfo record to avoid having same field names as treginfo record 2023-09-26 18:18:04 +00:00
florian
803a6fea24 * throw an error if instructions which needs an operand size is used with one operand being a reference without size 2023-09-16 23:25:31 +02:00
Pierre Muller
4f7c289029 Change loongarch64 default dynamic linker directory according to gcc 2023-09-16 21:11:46 +00:00
Jonas Maebe
c96641f901 LLVM: fix double init/fini of local managed variables accessed from nested functions
resolves #40392
2023-09-14 15:38:21 +02:00
Pierre Muller
fbe64536d1 Cast properly to avoid range error 2023-09-14 10:04:02 +02:00
florian
657f3c52bf * according to Jonas iOS doesn't zero extend results in the callee either, so check removed 2023-09-12 23:05:48 +02:00
Jonas Maebe
bcf77c70fd default parameter values: fix crash
Fix crash when declaring default parameter values while current_procinfo
is not yet valid

resolves #40413
2023-09-11 21:35:07 +02:00
florian
a517ada539 * on aarch64-darwin, the unused part of function results is not cleared 2023-09-10 19:27:21 +02:00
Pierre Muller
d2edd6fd2f Change V_Parallel so that V_All doesn't contain V_Parallel, only explicit -vj will add main source file information 2023-09-10 13:54:11 +00:00
Pierre Muller
67f89afe99 Regenerate msg*.inc files after adding -vj option description 2023-09-09 07:49:31 +00:00
Pierre Muller
63642b13c8 Add -vj option in options unit to set V_Parallel
Add mainsourcefile to all messages when V_Parallel verbosity option is set
Flatten out -vX options in help message to make changes easier
Add -vj option in help message
2023-09-09 07:49:22 +00:00
Pierre Muller
fd0f72303b Add main inputfilename for V_Parallel option to allow easier debugging of parallel compilation issues 2023-09-09 06:58:02 +00:00
Pierre Muller
63f91a768c Avoid double definition of V_XXX constants by moving them to globals unit
Add new V_Parallel constant
2023-09-09 06:54:30 +00:00
Pierre Muller
cf4d02ef92 Add globals to implementation _USES clause to prepare move of V_XXX constants to globals unit 2023-09-09 06:54:30 +00:00
Sven/Sarah Barth
3b455c1cf2 * fix #40390: implement support for handling parameter names (including __SELF and __HIGH(<identifier>)) that resolve directly to registers
+ added tests
2023-09-08 17:30:32 +02:00
Sven/Sarah Barth
2df57e117b * fix #40381: also check for hints when parsing the parameters of a routine (including open array parameters) or the result type of a function
+ added tests
2023-09-08 15:54:08 +02:00
florian
dd586da709 * formatting 2023-08-26 22:14:36 +02:00
Interferon
c482bafdaf There is code in the register allocator to restrict register allocation to the
first 16 registers in RISC-V RVE and RVEC modes.  However, there was still
code in tcpuparamanager.create_paraloc_info_intern that allowed the allocation
of up to register X17 in RVE and RVEC modes.  Modified this function to
take the processor mode into account and restrict it to X0..X15 in RVE and RVEC modes.

Also put conditional code in setjump.inc assembler code to only set the first
16 registers in RVE and RVEC modes.

The entire embedded-riscv32 RTL can now compile successfuly in RVEC mode.
2023-08-26 22:12:00 +02:00
Interferon
8382c6f586 Added generic WCH32Vx RISC-V processor types using memory size suffixes
Modified low-level startup code for RISCV32 embedded microcontrollers to
allow user code override of reset handlers for non-power-up reset events
as well as enabling user code override handlers for all 255 possible
interrupt vectors.
Separated out the low-level startup memory init into a callable procedure
to allow users that have caught reset events to init memory again if needed.

Signed-off-by: Interferon <brspm2@pinnaclesimulation.com>
2023-08-26 22:12:00 +02:00
J. Gareth "Curious Kit" Moreton
35e52b90f5 * Added missing register allocations to SSE/AVX optimisations 2023-08-24 19:41:41 +00:00
J. Gareth "Curious Kit" Moreton
49d66b8f20 * x86: Fixed bug where incorrect SSE/AVX peephole optimisations were performed under -O3 in some situations. 2023-08-24 19:41:41 +00:00
Jonas Maebe
a9f3906dd5 default(): fix in generics for non-procvars after 1be7416816
Block added in the wrong place :|

Resolves #40409
2023-08-22 21:19:12 +02:00
Jonas Maebe
2476062198 default(): fix webtbf/tw37303 after previous changes 2023-08-21 22:40:24 +02:00
Jonas Maebe
1be7416816 default value: fix issue with inlining
Ensure the mangled name is always the same

Resolves #40404
2023-08-20 22:08:47 +02:00
ccrause
9440b17eea [AVR] Add command line options to selectively remove portions of the RTL startup code. 2023-08-15 21:33:58 +00:00
Jonas Maebe
50040a2cab default values: store as staticvarsyms in staticsymtable
Previously, they were stored as localvarsyms in either the localsymtable
(for procedures/functions) or as localvarsyms in the staticsymtable (for
init/fini code of units/main programs). The latter was a hack (staticsymtables
normally cannot contain localvarsyms) and caused the temp allocator to also
allocate them as a local in fini code even if the default was only in the init
code.

The new approach ensures at most one copy gets allocated per unit, it doesn't
require explicit initialisation (since staticvarsyms are in bss -> zeroed by
default), gets rid of the localvarsyms in staticsymtables, and as a bonus
solves an issue with inconsistent LLVM debug information for the localvarsym
in init/fini code (since the staticsymtable is shared between the init and
fini code, so was the local, and therefore we generated debug info stating
it was defined in the fini code but within the scope of the init code).

Resolves #40395
2023-08-15 21:13:48 +02:00
J. Gareth "Curious Kit" Moreton
dde19c0144 * Improvement to TEST/JNE/TEST/JNE code to be more accurate where register deallocations are concerned 2023-08-12 23:43:05 +00:00
J. Gareth "Curious Kit" Moreton
699db16fe4 * x86: Fixed bug in TEST/JNE/TEST/JNE optimisation that caused bad code to be generated under -O3 2023-08-12 23:43:05 +00:00
florian
4096d9b74f * factor out subreg2opsize 2023-08-12 23:12:13 +02:00
J. Gareth "Curious Kit" Moreton
6ffa258abb * x86: Revamped OptPass2Jcc CMOV code to shrink and reuse registers as much as possible 2023-08-12 20:55:12 +00:00
J. Gareth "Curious Kit" Moreton
2a83972db8 * x86: Fixed bug where OptPass2Jcc CMOV optimisation sometimes
put the wrong-sized register into an operand (fixes i40307)
2023-08-12 20:55:12 +00:00
Jonas Maebe
13346a42bc volatile: allow for assignments 2023-08-12 12:04:40 +02:00
Pierre Muller
22a1acd610 Applied fix for binutils 2.41 for loongarch64 suggested by Jinyang He
32fa3e9eb1
  with modifications reported in comments.
2023-08-11 08:58:40 +00:00
Pierre Muller
ff673eadac Add unit specifiers for tlsdirectory fields: they need to be PUInt from globtype unit 2023-08-11 08:38:43 +00:00
Pierre Muller
ffdb789a49 Fix syntax errors in make fullcycle 2023-08-11 02:31:43 -05:00
Pierre Muller
b8f8a1dd1f Cleanup TLinkerLinux.SetDefaultInfo method in t_linux unit 2023-08-10 22:08:26 +00:00
Pierre Muller
ee97c0ca03 Add missing TPECoffExpDir variantr of MaybeSwap procedure 2023-08-10 22:08:26 +00:00
Pierre Muller
2443fd0ad7 Attempt to get ogcoff to work on CPU with opposite endianness 2023-08-10 22:08:26 +00:00
Pierre Muller
071ae41d24 Try to fix linker script for aarch64-win64 2023-08-10 22:08:26 +00:00
Sven Barth
82dd70e72f * fix parameter alignment on x86_64 when more than 6 parameters are involved (aka the stack is used)
+ added test
2023-08-03 22:34:28 +02:00
Jonas Maebe
1a410bae12 LLVM: LLVM 17.0 support
No changes in IR (that affect us) since LLVM 16.0
2023-08-01 22:19:55 +02:00
Jonas Maebe
2949d0b548 LLVM: only add sret attribute for first parameter on caller side
We already did this when generating the definitions, but not yet
when generating the calls
2023-07-30 22:22:28 +02:00
Jonas Maebe
b49d58a9fa LLVM: Xcode 14.3 support 2023-07-30 22:22:28 +02:00