Commit Graph

378 Commits

Author SHA1 Message Date
Michaël Van Canneyt
859b100da6 * Convert symversions to dyn array of word 2025-03-20 17:01:31 +01:00
Michaël Van Canneyt
0f2248f923 * Use dyn array of boolean for isHandled 2025-03-20 17:01:31 +01:00
Michaël Van Canneyt
b58469a7bd * Change pchar to dynamic array of ansichar 2025-03-20 17:01:31 +01:00
Nikolay Nikolov
d35a2f53e7 * the FPC_WASM_SATURATING_FLOAT_TO_INT_CONVERSIONS define shortened to FPC_WASM_SATURATING_FLOAT_TO_INT
* increased the max string length of ttargetswitchinfo.define in order to fit the new define
2025-02-25 09:20:01 +02:00
Nikolay Nikolov
0c939ac6c6 + WebAssembly: added support for using saturating (non-trapping) float-to-int conversion instructions via the new target switch SATURATINGFLOATINGTOINT 2025-02-25 09:08:55 +02:00
florian
c828615886 + enable strength reduction for -O3, probably an oversight for years that it was not included in -O3 2024-10-19 11:00:24 +02:00
Ryan Joseph
bc72021039 * Define RTTI directive parameters 2024-01-02 07:09:21 +01:00
Michaël Van Canneyt
c9b88a1cd0 * Allow to disable 8.3 filename search 2023-11-12 09:55:30 +01: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
Pierre Muller
79d1fcd40d Introduce -XLL option for link using ld.lld linker 2023-07-19 19:00:30 +02:00
Michaël Van Canneyt
0515be62b4 * Add option to allow emitting comments in RTTI info 2023-05-29 13:41:25 +00:00
Sven/Sarah Barth
6cbbf9c52a * $P/$OpenStrings is supposed to be a local switch, so change that accordingly
+ added tests
2022-10-08 13:52:32 +02:00
Sven/Sarah Barth
7b09eee02a * mark units compiled with cs_compilesystem with a corresponding flag 2022-09-18 15:41:33 +02:00
Jonas Maebe
75c16b6126 llvm: support for getting the llvm rtl (rt) architecture name
This is the name used as part of the llvm rt libraries, like
asan (address sanitizer)
2022-07-24 14:36:13 +02:00
Jonas Maebe
403292a131 LLVM backend: address sanitizer support
Activate with -Clfsanitize=address. Only tested on Darwin/x86-64 for now.
2022-07-06 22:26:13 +02:00
Nikolay Nikolov
14dc066d6b + added check whether PPU and program are compiled in the same WebAssembly
exceptions mode (either both are turned on, or both are turned off)
2022-06-21 23:12:28 +03:00
florian
d2a1f9cb20 * get rid of cs_opt_none
* $O+ sets cs_opt_level2 instead of cs_opt_none which made no sense
2022-06-18 20:13:03 +02:00
Nikolay Nikolov
1fce5121f3 + added the 'wasmthreads' target switch (enabled via -CTwasmthreads) 2022-05-28 01:18:55 +03:00
Sven/Sarah Barth
4e4d268963 + add modeswitch for anonymous functions 2022-05-26 21:43:00 +02:00
Sven/Sarah Barth
2912e38e91 + add modeswitch for anonymous function and function references 2022-05-26 21:42:56 +02:00
Jonas Maebe
5075198a8b tfileposinfo: separate types for the fields
Allows other units to declare variables of the appropriate type when storing
those values separately
2022-05-13 22:49:02 +02:00
Sven/Sarah Barth
90844c2027 * fix #35261: apply slightly adjusted changes by Ryan Joseph to implement support for implicit generic function specializations
The main adjustments were as follows:
  - fixing coding style and identation
  - fixing some typos
  - using a better name for the property in tcallcandidates which holds the symbols created for anonymous parameter values
2022-04-20 18:59:31 +02:00
florian
2a93e65511 * seperator => separator 2022-01-02 13:12:33 +01:00
florian
d2447026de + modeswitch UNDERSCOREISSEPERATOR, active by default in delphi modes:
support _ as seperator in numbers, it is ignored while reading them, resolves #39504
2022-01-01 23:28:36 +01:00
Florian Klämpfl
a47f153dae * avoid to create a stack frame on aarch64 if possible 2021-11-02 22:23:24 +01:00
florian
dcb1fcd9b8 + support $lgeacyifend directive, resolves #37676 2021-11-01 23:24:42 +01:00
Nikolay Nikolov
344da9597f + added the current WebAssembly exceptions mode to the .ppu module flags and
perform a check to ensure all units are compiled in the same exceptions mode
  as the main program
2021-10-08 23:50:28 +03:00
Nikolay Nikolov
1011c31a80 + increase string type to avoid const string truncation 2021-10-04 00:15:27 +03:00
Nikolay Nikolov
2577180b93 + introduced WebAssembly branchful exceptions 2021-10-04 00:10:31 +03:00
Nikolay Nikolov
3a242a17f4 * increased size of ttargetswitchinfo.define to fit the string added in my
previous commit
2021-09-16 21:44:05 +03:00
Nikolay Nikolov
eda6b105b7 + added target flags for the different WebAssembly exception modes that I'm
planning to implement
2021-09-16 21:41:54 +03:00
florian
1e072aef31 + for loop optimizations can be controller by a switch (-Oo(no)forloop) 2021-09-12 10:54:46 +02:00
florian
468975aa30 + move often used floating point constants into registers 2021-09-05 18:19:58 +02:00
florian
1f49e633b6 + modified patch by Christo Crause: if the target support, the switch -Xu can be used to generate the executable as an uf2 file
git-svn-id: trunk@48394 -
2021-01-24 14:21:03 +00:00
florian
792b629aa6 + -Xa option: generate code which allows to use more than 2 GB of static data on 64 Bit targets
+ implemented support for x86-64
  * more than 2 GB static data requires to use the --no-relax option on linux

git-svn-id: trunk@47651 -
2020-11-30 22:07:34 +00:00
pierre
c06a931d5b Add separate cs_assemble_on_target tglobalswitch entry
git-svn-id: trunk@47486 -
2020-11-20 14:14:46 +00:00
Jonas Maebe
312f1436b1 * changed TIDString and tsymentry.realname to TSymStr
o for TIDString: prevents shortstring -> ansistring conversions with
     -dsymansistr when looking up symbols
   o for realname: consistency with name

git-svn-id: trunk@47301 -
2020-11-03 21:34:22 +00:00
Jonas Maebe
eb7ba1690e * mark all external assemblers using an LLVM tool using af_llvm
+ added support for constructing target triplets
  * pass "-target triplet" when using an LLVM assembler
   o removed no longer needed $DARWINVERSION and $ARCH parameters
  * consistently use as_clang_gas when clang is used to assembler GAS-style
    assembly, and rename as_llcm_clang to as_clang_llvm (for consistency)
  * support pipe assembling when using clang on *nix in all cases

git-svn-id: trunk@45807 -
2020-07-19 14:30:35 +00:00
yury
4e1e35aef5 * Added optimization option cs_opt_unused_para. It is enabled for -O2 and higher. The parentfp optimization is tied to cs_opt_unused_para.
git-svn-id: trunk@45666 -
2020-06-20 18:47:42 +00:00
florian
82a3877126 + x86: track use of full ymm registers and generate vzeroupper if needed
git-svn-id: trunk@45484 -
2020-05-24 17:52:05 +00:00
svenbarth
068f0d2ec8 * fix for Mantis #36935: apply patch by J. Gareth Moreton to fix a typo in cs_opt_remove_empty_proc
git-svn-id: trunk@44888 -
2020-04-20 18:42:30 +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
florian
a2d3522812 * general-dynamic -> global-dynamic
git-svn-id: trunk@43132 -
2019-10-05 20:48:29 +00:00
florian
03f7ef4c63 * renamed tls model switches and symbols to match gcc
git-svn-id: trunk@43122 -
2019-10-05 20:48:20 +00:00
svenbarth
b2932393df Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 1/3]
Implemented attributes for class types and properties (based on work by Joost van der Sluis). Added TCustomAttribute - a base class for attributes. Added TUnitInfo record to RTTI. It contains the unit name and unit options (for now only a flag which specifies if the unit contains attributes). Added several tests for attributes.

git-svn-id: trunk@42356 -
2019-07-12 22:04:48 +00:00
Jonas Maebe
cc9f8b7f56 * record in ppu flag whether or not symbols are ansistrings, and use that
flag in ppudump rather than hardcoding targets (it's also the case for
    LLVM)

git-svn-id: trunk@42312 -
2019-06-30 16:24:44 +00:00
Jonas Maebe
9a327f1fcd * ensure the LLVM-based compiler does not try to load units compiled with a
non-LLVM-base compiler and vice versa (caused internal errors, because
    the LLVM compiler uses different nodes, and these are saved in the PPUs
    for inline routines)

git-svn-id: branches/debug_eh@42196 -
2019-06-08 20:17:10 +00:00
Jonas Maebe
a0e35fd1bc * synchronised with trunk till r42118
git-svn-id: branches/debug_eh@42119 -
2019-05-25 13:19:06 +00:00
Jonas Maebe
77658b925b * disable regular array -> dynamic array type coversion support unless
{$modeswitch arraytodynarray} is active (mantis #35576)
   o changed compiler to compile without this modeswitch
   o added the modeswitch to a test that depends on it

git-svn-id: trunk@42118 -
2019-05-25 12:31:32 +00:00
Jonas Maebe
1b6425176b * synchronised with trunk till r42049
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +00:00