Pierre Muller
2a4ca98e85
Use systems_darwin set for supported targets for as_clang_llvm_darwin
2023-04-06 14:40:15 +00:00
Jonas Maebe
815b17a43b
llvm: correctly write aliases when using opaque pointers
2022-07-28 22:59: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
Jonas Maebe
b2ea782eb4
agllvm: fix writing strings in metadata arrays
...
They were interpreted as part of larger strings
2022-07-06 22:25:05 +02:00
Jonas Maebe
25999ad8ff
llvm: support for opaque pointers
...
Will be the default starting with LLVM 15, and required with LLVM 16.
Tested with LLVM 14 and '-mllvm -opaque-pointers'. See
https://releases.llvm.org/14.0.0/docs/OpaquePointers.html for more
information.
2022-06-12 11:45:31 +02:00
Jonas Maebe
71c58c7b3d
agllvm: missing space between type and tai operand
2022-06-12 11:45:31 +02:00
Jonas Maebe
a76085e463
tllvmcallpara: record whether it's passed to metadata
...
Sometimes we need the def to store a the original def of the passed parameter,
e.g. for the first argument to llvm.dbg.addr
2022-06-04 22:26:40 +02:00
Jonas Maebe
41a6c5e967
agllvm: support specialised metadata with field names
...
Necessary for DIExpression
2022-06-04 22:26:40 +02:00
Jonas Maebe
c92a035614
agllvm: support nested constants in parameters
...
Needed for metadata support
2022-06-04 22:26:40 +02:00
Jonas Maebe
dc1e0a6bb3
tllvmcallpara: turned into object and added convenience methods
2022-06-04 22:26:40 +02:00
Jonas Maebe
aa43441ac9
llvm: replaced boolean fields in tllvmcallpara with a set
2022-06-04 22:26:40 +02:00
Jonas Maebe
a45e5e7ab6
llvm: version 14.0 support
2022-06-04 13:34:09 +02:00
Jonas Maebe
1b06599e82
llvm: version 12.0 support
2022-06-03 21:46:23 +02:00
Sven/Sarah Barth
088c746d45
* reset written source lines once a section is encountered
2022-05-26 21:43:35 +02:00
Jonas Maebe
f896766837
agllvm: fix writing metadata operands for variable declarations
2022-05-21 22:32:35 +02:00
Jonas Maebe
16cb409fbf
LLVM: separate as_clang_llvm_darwin
...
The Darwin local label prefix ('L') is different from that on most other
platforms ('.L). While LLVM generally handles that for us, for inline
assembly it's still FPC's job to adhere to the target conventions.
2022-05-14 22:38:49 +02:00
Pierre Muller
9b87fb4a34
Use '.L' as labelprefix for LLVM compiler variant
2022-05-14 21:26:13 +02:00
Jonas Maebe
78535bbcd8
agllvm: support for writing specialised metadata nodes
2022-05-13 22:49:02 +02:00
Jonas Maebe
527c68b6c3
agllvm: remove useless code
2022-05-13 22:49:02 +02:00
Jonas Maebe
a8cb061a50
LLVM: support for attaching metadata to instructions
2022-05-13 22:49:02 +02:00
Jonas Maebe
4293d4455c
LLVM: factor out writing operands in agllvm
2022-05-13 22:49:02 +02:00
pierre
04ebdf8df8
Fix compilation for x86_64 llvm variant
...
git-svn-id: trunk@49477 -
2021-06-05 06:47:46 +00:00
pierre
aadcb00977
Add -march option to clang call for llvm target
...
git-svn-id: trunk@49475 -
2021-06-04 21:14:34 +00:00
pierre
96f2e683e7
Also accept s80bit real constants when FPC_SOFT_FPUX80 macro is defined
...
git-svn-id: trunk@47557 -
2020-11-24 15:31:26 +00:00
Jonas Maebe
080d8c28f7
* LLVM 11.0 support
...
git-svn-id: trunk@47121 -
2020-10-17 14:59:04 +00:00
florian
637976e83f
* patch by Marģers to unify internal error numbers, resolves #37888
...
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
yury
6e777d8967
* ait_comment,ait_regalloc,ait_tempalloc,ait_varloc instructions produce only comments in the external assembler output. Moved handling of these instructions to TExternalAssembler.WriteComments().
...
This eliminates code duplication and improves maintainability.
git-svn-id: trunk@46550 -
2020-08-22 19:53:39 +00:00
yury
5ec489c018
* ait_varloc instructions are handled and removed by Trgobj.translate_registers() and never left for an assembler.
...
git-svn-id: trunk@46541 -
2020-08-22 10:58:21 +00:00
Jonas Maebe
a5bad32b7c
- removed no longer used -target $TARGET parameter (triplet is used instead)
...
git-svn-id: trunk@45853 -
2020-07-25 16:11:54 +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
nickysn
3d81dd0b00
* ReplaceForbiddenAsmSymbolChars renamed ApplyAsmSymbolRestrictions, because now it also applies the
...
label length limit
git-svn-id: branches/z80@45085 -
2020-04-26 10:42:07 +00:00
nickysn
a8fe46c0f5
+ introduced labelmaxlen in tasminfo and added code in ReplaceForbiddenAsmSymbolChars that limits the
...
output label to that length
git-svn-id: branches/z80@45066 -
2020-04-25 12:59:25 +00:00
Jonas Maebe
79974a9671
+ -XlS<x> option to specify a suffix for externally called LLVM utilities,
...
e.g. -XlS-7 to call clang-7 instead of clang)
* IMPORTANT: changed the -CL llvm code generation options to -Cl, for
consistency with the new -Xl option (-XL was already taken)
git-svn-id: trunk@44436 -
2020-03-30 19:58:49 +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
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
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
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
9678542ba6
+ add "thunk" attribute for stubs/thunks and emit it for LLVM
...
- also removed wrong "noreturn" attribute for interface thunks generated
for high level code generator targets
git-svn-id: trunk@43018 -
2019-09-15 20:43:12 +00:00
Jonas Maebe
dcf4e4cb2c
* support taking the address of labels defined in assembler blocks in the
...
LLVM code genrator (for the rtti unit's thunk hacking)
git-svn-id: trunk@42969 -
2019-09-09 18:33:33 +00:00
Jonas Maebe
3f2578a3e3
* don't quote LLVM calling convention name (that will cause it to be ignored)
...
o fixes tasm10a and tx64ccnv.ll with LLVM
git-svn-id: branches/debug_eh@42193 -
2019-06-08 17:11:20 +00:00
Jonas Maebe
9f18cbf5d6
* support writing aggregate LLVM constants that are not packed
...
git-svn-id: branches/debug_eh@42107 -
2019-05-19 19:26:55 +00:00
Jonas Maebe
d74b0843df
* set null-pointer-is-valid attribute on functions, so that LLVM does not
...
optimise provable accesses to null as undefined behaviour (requires
LLVM/Clang 7.0 or later)
git-svn-id: branches/debug_eh@42055 -
2019-05-12 21:09:44 +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
281b3ad276
* fix case completeness and unreachable code warnings in compiler that would
...
be introduced by the next commit
git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
3fa6838815
* basic llvm metadata support
...
git-svn-id: branches/debug_eh@41978 -
2019-05-02 19:45:26 +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
810d0ab2fe
* use $DARWINVERSION functionality to pass Darwin/iOS version to clang when
...
assembling llvm bitcode
git-svn-id: branches/debug_eh@41909 -
2019-04-20 18:56:07 +00:00
Jonas Maebe
fcde89cb26
* support forcing to write the parameter alignment for parameters for LLVM,
...
even when it's the same as the stack alignment (it can also refer to the
alignment of the data pointed to by pointer parameters)
git-svn-id: branches/debug_eh@41729 -
2019-03-17 15:28:27 +00:00
Jonas Maebe
16cde0da15
* create LLVM TAsmCFI wrapper that calls through to the original TASmCFI for
...
pure assembler routines and for generating the CFI tables, and does nothing
for LLVM-handled routines (LLVM takes care of the CFI there)
git-svn-id: branches/debug_eh@41580 -
2019-03-03 17:15:09 +00:00
Jonas Maebe
a079e5fa80
* synchronised with trunk till r41449
...
git-svn-id: branches/debug_eh@41450 -
2019-02-24 20:01:53 +00:00