Commit Graph

65382 Commits

Author SHA1 Message Date
florian
81fd3e2748 * more readable fix for the missing ait_instruction check 2022-05-15 19:32:27 +02:00
J. Gareth "Curious Kit" Moreton
27db63969a * a64: Fix where hp1's was assumed to be an instruction and not actually checked 2022-05-15 16:47:55 +00:00
marcoonthegit
41704feab4 * fix ipv6_ constants in unxsockh. bug 29111 Apparently changed since 2005 2022-05-15 18:25:11 +02:00
Jonas Maebe
0d74752b1f Fix %cpu type as spotted by Alexey Torgashin 2022-05-15 18:01:48 +02:00
Jonas Maebe
9b11509dd0 Text for merge request #226 2022-05-15 10:57:43 +02:00
Brendan Dougherty
1923c8a611 Only use Win64 vectorcall special case if calling convention is vectorcall. 2022-05-15 08:56:50 +00: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
Jonas Maebe
481741c65b llvmdbg: remove some commented dbgdwarf code
Also adjusted some hashtable sizes
2022-05-14 22:38:49 +02:00
florian
e8da1d081a + Aarch64: MovOp2AddUtxw optimization 2022-05-14 22:30:56 +02:00
Pierre Muller
9b87fb4a34 Use '.L' as labelprefix for LLVM compiler variant 2022-05-14 21:26:13 +02:00
Pierre Muller
a0d4cccd87 Fix syntax error for isLocal field for function/procedure type LLVM debug information 2022-05-14 21:05:54 +02:00
J. Gareth "Curious Kit" Moreton
f6c741ee73 * Corrected label reference counts caused by TAsmLabel.GetName incrementing refs 2022-05-14 18:57:05 +00:00
Jonas Maebe
cddffbed58 llvmdbg: disable open array data location
Since we don't generate full debug info for parameters yet, this internalerrors
2022-05-14 08:34:38 +02:00
Jonas Maebe
fd125b506e LLVM debug info: LLVM 7.0 support
Also defined some llvm flags in a negative way so they can be removed from
later versions rather than added
2022-05-13 22:49:02 +02:00
Jonas Maebe
edbddec98a llvmdbg: diflags/dispflags fixes
Fix MainSubprogram flag for older LLVM versions, as it was a plain flag rather
than a subprogram flag there.

Added visibility flags for procdefs (public/private/protected)

Write flags as enum rather than integer to avoid issues with changing values
across different LLVM versions
2022-05-13 22:49:02 +02:00
Jonas Maebe
816ab7ffcc llvm metadata: counter per unit rather than globally
Results in less high numbers, and reproducible results when partially
rebuilding
2022-05-13 22:49:02 +02:00
Jonas Maebe
9b280db2b1 dbgllvm: add scopeLine attribute for function debug info
Ensures that breaking on the function correctly sets the breakpoint on the
first source line of the function (rather than potentially in the prologue
without line information)
2022-05-13 22:49:02 +02:00
Jonas Maebe
d1aaeff832 dbgllvm: fix crash for files without procedures/functions 2022-05-13 22:49:02 +02:00
Jonas Maebe
067d96242c dbgllvm: fix crash when generating debug info for procdef of imported struct 2022-05-13 22:49:02 +02:00
Jonas Maebe
cf6a97c8ed LLVM: fix fileinfo of temp allocations 2022-05-13 22:49:02 +02:00
Jonas Maebe
8d2d91d505 dbgllvm: fix infinite loop when writing multi-dimensional array info 2022-05-13 22:49:02 +02:00
Jonas Maebe
a7e19e9f06 llvm metadata: use cardinal instead of tsuperregister for unnamed metadata numbers
We're not putting these into registers, so no need to limit ourselves
2022-05-13 22:49:02 +02:00
Jonas Maebe
a75adf542d dbgllvm: handle empty spFlags 2022-05-13 22:49:02 +02:00
Jonas Maebe
91563115c4 dbgllvm: handle array of const (stub) 2022-05-13 22:49:02 +02:00
Jonas Maebe
aec7aefdd5 dbgllvm: create dummy line info for instructions that shouldn't have any
Use line 0 for that, like clang does
2022-05-13 22:49:02 +02:00
Jonas Maebe
20674089bd llvmdbg: add declaration for all DISPFlags 2022-05-13 22:49:02 +02:00
Jonas Maebe
13055bb58a llvmtype: ensure all processed defs get recorded
This is necessary so they get reset as well, as they may be reprocessed while
compiling other units (both by llvmtype and dbgllvm)
2022-05-13 22:49:02 +02:00
Jonas Maebe
f832444eaa LLVM lineinfo: fix nolineinfo generation
LLVM requires line info metadata for all call instructions that may potentially
be inlined. So attach one to all call instructions in nolineinfo regions, but
set their line number to 0 (same as what clang does)
2022-05-13 22:49:02 +02:00
Jonas Maebe
40418f5b3d dbgllvm: remove restriction to only write struct procdef in context of struct
Does not make a difference for LLVM since all debug info for procdefs is
assigned to the definition instructions for the procdef anyway, and avoids
issues when only generating line info (in that case the structs will never
be processed, but we still have to generate the basic debug info for their
procdefs to provide a scope for their line info)
2022-05-13 22:49:02 +02:00
Jonas Maebe
6cacd9c824 llvmdbg: initial version based on dbgdwarf
Line information is mostly functional, type information not yet (except
for basic procdef info, as that's required for line info)
2022-05-13 22:49:02 +02:00
Jonas Maebe
f1bcd02aaf Typed const builder: store tsym
Useful for LLVM debug info generation
2022-05-13 22:49:02 +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
Jonas Maebe
b7b495a679 LLVM: assign procdef.procstarttai, like in the regular code generator 2022-05-13 22:49:02 +02:00
Jonas Maebe
229eb93e72 tnodeuitls: merge GenerateObjCImageInfo into InsertObjectInfo
LLVM needs to insert the Objective-C image info into the general object info
metadata. This way we don't need to store a reference to that metadata so
as to add extra data to it later (tnodeutils is never instantiated, it only
contains class methods)
2022-05-13 22:49:02 +02:00
Jonas Maebe
78535bbcd8 agllvm: support for writing specialised metadata nodes 2022-05-13 22:49:02 +02:00
Jonas Maebe
d294731542 LLVM: enable DWARF debug info generation 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
Jonas Maebe
411fa298ae LLVM: data location debug info support
This was added to LLVM for Fortran arrays, but can also be used for Pascal
dynamic arrays
2022-05-13 22:49:02 +02:00
Jonas Maebe
1d010d918b LLVM metadata: specialised metadata fleshing out 2022-05-13 22:49:02 +02:00
Jonas Maebe
ac89cfc6c7 aasmtai: added tai_string.Create(ansistring)
Also prevent range check errors for empty strings
2022-05-13 22:49:02 +02:00
Jonas Maebe
4da1ad71a4 * moved a bunch of constants from dbgdwarf to dbgdwarfconst 2022-05-13 22:49:02 +02:00
florian
a285500d36 * patch by Rike: Use reverse_longword instead of manually reversing longword, resolves #39720 2022-05-13 22:38:03 +02:00
Nikolay Nikolov
812736bd41 + support the atomic.fence instruction in the WebAssembly internal object writer 2022-05-13 22:56:36 +03:00
Nikolay Nikolov
1d70437017 + added intrinsic (for RTL internal use) that emits the WebAssembly atomic.fence instruction 2022-05-13 22:46:27 +03:00
Nikolay Nikolov
ddab39dbdc + enable the atomics extension on the llvm-mc command line (extension appears
to be recognized since LLVM 8.0, so it should be safe to always enable this
  from the llvm-mc command line)
2022-05-13 21:15:54 +03:00
Nikolay Nikolov
5198e47e36 + added the atomic memory access WebAssembly instructions from the threading proposal for WebAssembly 2022-05-13 20:55:12 +03:00
Michaël Van Canneyt
de7d7d34ca * Compile jwrsa 2022-05-13 08:52:42 +02:00
Michaël Van Canneyt
6f6a003414 * Patches from Pascal Riekenberg, some small corrections 2022-05-13 08:52:42 +02:00