Commit Graph

372 Commits

Author SHA1 Message Date
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
Jonas Maebe
ba1b4b1c92 + support for verifying whether a case statements handles all possibilities
(based on patch by Martok)
   o enabled by default in ISO and Extended Pascal: compile-time error if not
     the case in ISO mode, warning and run-time error in Extended Pascal mode
   o warning enabled by default in all other modes for boolean, enumeration and
     subrange integer types with ranges different from the default ones
     (i.e., different from 0..255, -128..127, 0..65536, etc)
   o warnings for all ordinal types can be enabled in all modes with
     -CC

git-svn-id: trunk@42047 -
2019-05-12 14:29:11 +00:00
svenbarth
5a5b47fa24 + add support for MultiHelpers modeswitch by Ryan Joseph for Mantis #35159
+ added tests

git-svn-id: trunk@42026 -
2019-05-10 14:04:45 +00:00
Jonas Maebe
46efaf4b2c + support for -CLflto_nosystem option to perform LTO for everything except
for the system unit, as there are several bugs in the Xcode linkers
    that trigger when the system unit is involved:
   o Xcode 9.3: the second symbol associated with routines that have multiple
     symbols (such as FPC_INTERLOCKED*) gets moved to the next routine (so
     e.g. calling InterlockedIncrement results in calling InterlockedExchange)
   o Xcode 10.1: the linker does not generate native code for the personality
     routine (probably because it's not referenced directly anywhere)

git-svn-id: branches/debug_eh@41911 -
2019-04-20 18:56:15 +00:00
Jonas Maebe
fc60ec2ea4 + support for LLVM LTO: compile units with -CLflto -> when compiling a main
program/library also with -Clflto, all units compiled with that option
    will be linked using their bitcode files and LTO
   o compiling with -CLflto will compile all units twice: once for normal
     (static or smart) linking, and once for LTO. So the result can be
     used both with and without LTO.

git-svn-id: branches/debug_eh@41910 -
2019-04-20 18:56:11 +00:00
Jonas Maebe
a7bd37d17a * synchronised with trunk till r40776
git-svn-id: branches/debug_eh@41867 -
2019-04-13 15:16:09 +00:00
Jonas Maebe
0b61b5d4cf * added extra header to ppu inside a subsection, so we won't run into
trouble when the ppu version hits 255
  * also moved several ppu flags to a set inside that section

git-svn-id: trunk@41846 -
2019-04-06 21:28:43 +00:00