Jonas Maebe
8eb07ed7b1
* add support for custom calling conventions to LLVM function declarations
...
git-svn-id: branches/debug_eh@41211 -
2019-02-03 21:09:58 +00:00
Jonas Maebe
9d07e4948f
* fix compilation of ARM compiler for LLVM
...
git-svn-id: branches/debug_eh@41210 -
2019-02-03 21:09:54 +00:00
Jonas Maebe
d93c05a90c
* synchronised with trunk till r41207
...
git-svn-id: branches/debug_eh@41208 -
2019-02-03 21:05:37 +00:00
Jonas Maebe
503ea604f3
+ nolinline modifier to specify that a routine must never be inlined
...
git-svn-id: trunk@41198 -
2019-02-03 21:00:17 +00:00
Jonas Maebe
31c047adf8
* synchronised with trunk till r40605
...
git-svn-id: branches/debug_eh@40606 -
2018-12-21 20:58:16 +00:00
Jonas Maebe
3b4011760a
* cleaned up blockaddress instruction (add type rather than hardcoding it
...
in the assembler writer)
* fixed taking the address of a label in a typed const for llvm (fixes
tbs/tb0468a)
git-svn-id: trunk@40599 -
2018-12-20 21:22:44 +00:00
Jonas Maebe
f26ac9026e
* enable LLVM support Linux/AArch64
...
o also put the regular function result before the partfpstruct parameter
git-svn-id: branches/debug_eh@40577 -
2018-12-16 20:46:44 +00:00
Jonas Maebe
cec839ab30
- removed the -(m)stack-alignment parameter, as it prevents stack-realignment
...
by llc (so avx code crashes on targets wich 16 byte stack alignment --
which is all of them)
git-svn-id: branches/debug_eh@40445 -
2018-12-01 23:08:48 +00:00
Jonas Maebe
eb742bcacc
* pass on the value of -CfXXX to llc/clang for x86-64
...
git-svn-id: branches/debug_eh@40438 -
2018-12-01 20:30:46 +00:00
Jonas Maebe
85702dd263
+ added support for clang as an assembler for llvm IR
...
* adapted string used for macOS/iOS version in triple in llvm IR files to
what clang expects (always a single digit patch version)
git-svn-id: branches/debug_eh@40431 -
2018-12-01 20:30:24 +00:00
Jonas Maebe
645a4da831
- removed "-enable-fp-mad" llc option, as it's not supported for all versions
...
git-svn-id: branches/debug_eh@40420 -
2018-11-29 21:50:18 +00:00
Jonas Maebe
fceb34dbd5
* converted tllvmpara contents from tlocation to toper, so we can also
...
store tai in them
+ support for direct symbol parameters to llvm routines (without first
loading them into register)
o needed to pass such symbols to llvm intrinsics
git-svn-id: branches/debug_eh@40414 -
2018-11-29 21:31:27 +00:00
Jonas Maebe
ce7579bd50
+ added "cleanup" landing pad opcode
...
git-svn-id: branches/debug_eh@40411 -
2018-11-29 21:31:18 +00:00
Jonas Maebe
077d7e8551
* fixed handling of LLVM invoke instruction in the assembler writer and
...
type inference
git-svn-id: branches/debug_eh@40403 -
2018-11-29 21:30:53 +00:00
Jonas Maebe
5b8f7224af
* set the dummy exception handling personality function for functions using
...
exceptions for LLVM (except on Windows targets, since they (will) use
their own kind of exception handling)
o ensure we generate an external function symbol definition for such
personality functions on LLVM
git-svn-id: branches/debug_eh@40402 -
2018-11-29 21:30:49 +00:00
Jonas Maebe
4b9179636b
+ support for creating and writing LLVM landingpad instructions
...
git-svn-id: trunk@35161 -
2016-12-18 13:57:42 +00:00
Jonas Maebe
28e5636daa
+ support for LLVM nil assembler symbols in instructions (write as "null")
...
+ support for LLVM nil tai operands (will be used for terminating a daisy
chain of catch/filter clauses of landingpads): don't try to write it
git-svn-id: trunk@35160 -
2016-12-18 13:57:39 +00:00
Jonas Maebe
876e5eab56
* fixed "smart linking" parameters to llc
...
git-svn-id: trunk@35044 -
2016-12-02 17:45:12 +00:00
Jonas Maebe
02e4a27a35
* print internalerrors in case we still encounter stray constants not part of
...
a typed constants
* don't print superfluous newlines in typed constant definitions
git-svn-id: trunk@35042 -
2016-12-02 12:33:09 +00:00
Jonas Maebe
97d6f17cc8
+ add support for marking an LLVM definition as using "appending" linkage
...
git-svn-id: trunk@35039 -
2016-12-02 12:32:58 +00:00
Jonas Maebe
d328d7d95d
* don't write an alignment for symbols in internal llvm sections (sections
...
whose name starts with 'llvm.')
git-svn-id: trunk@35038 -
2016-12-02 12:32:54 +00:00
Jonas Maebe
d99d18e258
- removed useless empty asmwrite statement
...
git-svn-id: trunk@35037 -
2016-12-02 12:32:51 +00:00
Jonas Maebe
26f9dabf56
* write the volatile flag for LLVM load/store operations if set
...
git-svn-id: trunk@35004 -
2016-11-27 21:44:32 +00:00
Jonas Maebe
4d951780d1
+ support for LLVM 3.8 and LLVM 3.9 IR to the llvm assembler writer
...
git-svn-id: trunk@35003 -
2016-11-27 21:44:29 +00:00
Jonas Maebe
ef90b46e52
* comment fix
...
git-svn-id: trunk@34958 -
2016-11-24 19:47:48 +00:00
Jonas Maebe
3b7d9447ae
* blockaddress creates a constant operand for another opcode, it's not an
...
independent operation
o additionally, it does not take a "label" qualifier for its label argument
git-svn-id: trunk@34944 -
2016-11-21 07:39:05 +00:00
Jonas Maebe
e1e3ad15f0
* escape all occurrences of '$' in function-level inline assembly
...
o temporarily encode the uses of '$' for references to function-level inline
assembly arguments as '^', because those have to remain/become a single
'$'
git-svn-id: trunk@34898 -
2016-11-13 22:10:00 +00:00
Jonas Maebe
43e599d6be
* fixed function-level inline assembly constraints in case there are no
...
parameters
git-svn-id: trunk@34897 -
2016-11-13 22:09:57 +00:00
Jonas Maebe
c4ae040258
+ support for writing LLVM function-level inline assembly blocks
...
git-svn-id: trunk@34891 -
2016-11-13 16:06:29 +00:00
Jonas Maebe
1c23218375
* pass the parameter list directly to getparas()
...
git-svn-id: trunk@34888 -
2016-11-13 16:06:20 +00:00
Jonas Maebe
bdfd588b47
* free the temporary assembler writer created for writing the code of pure
...
assembler routines
git-svn-id: trunk@34887 -
2016-11-13 16:06:17 +00:00
Jonas Maebe
af297e849c
+ function-level LLVM inline assembly decorator
...
git-svn-id: trunk@34855 -
2016-11-09 19:51:30 +00:00
Jonas Maebe
646385e966
* support for overriding the line ending character in external assembler
...
writer decorators (for LLVM function-level inline assembly: there
newline has to be replaced by the character sequence '\0A')
git-svn-id: trunk@34854 -
2016-11-09 19:51:27 +00:00
Jonas Maebe
74a49b5f91
* restructured the the TExternalAssembler constructors so that the
...
hack for the Jasmin descendent is no longer needed
git-svn-id: trunk@34852 -
2016-11-09 19:51:20 +00:00
Jonas Maebe
999cb7de6d
+ LLVM 3.7 support in the LLVM IR writer
...
git-svn-id: trunk@34550 -
2016-09-20 21:44:06 +00:00
Jonas Maebe
7ebbb744e9
* also specify sret attribute at the caller side
...
git-svn-id: trunk@34302 -
2016-08-13 14:47:42 +00:00
Jonas Maebe
819f0c39fa
* specify the "byval" attribute also at the caller side
...
git-svn-id: trunk@34301 -
2016-08-13 14:47:39 +00:00
Jonas Maebe
687adbefd7
+ support for LOC_VOID parameters in llvm for empty records (fixes
...
tests/test/tnoext4.)
git-svn-id: trunk@34136 -
2016-07-15 14:35:17 +00:00
Jonas Maebe
14ab43626f
* don't write initialisation values for AB_EXTERNAL_INDIRECT
...
git-svn-id: trunk@33956 -
2016-06-12 09:20:51 +00:00
Jonas Maebe
44839ba0c0
* handle AB_INDIRECT and AB_EXTERNAL_INDIRECT in the llvm assembler writer
...
git-svn-id: trunk@33721 -
2016-05-20 20:51:28 +00:00
Jonas Maebe
4fff9645af
* use tasmbind for llvm aliases and derive llvm flags from that
...
git-svn-id: trunk@33720 -
2016-05-20 20:51:25 +00:00
nickysn
e1f21fb1e3
+ handle the asd_cpu directive (commented out, but without producing an internal
...
error) on all the remaining external assemblers, so it is safe to emit on all
platforms
git-svn-id: trunk@33122 -
2016-02-26 20:50:41 +00:00
Jonas Maebe
e3f8f8c974
* fixed position of "weak" linkage flag
...
git-svn-id: trunk@32915 -
2016-01-10 17:22:14 +00:00
Jonas Maebe
5959f45694
* emit custom Objective-C names in the LLVM assembler writer
...
git-svn-id: trunk@32912 -
2016-01-10 17:22:06 +00:00
Jonas Maebe
53bf43983a
+ support for emitting weak symbols with the high level typed constant builder
...
git-svn-id: trunk@32883 -
2016-01-07 22:06:06 +00:00
Jonas Maebe
58ae32e2d1
* factored out writing the LLVM linkage flags, take into account version
...
differences and also write them for procdefs
git-svn-id: trunk@32882 -
2016-01-07 22:06:00 +00:00
Jonas Maebe
110a5642c0
- removed ait_weak/tai_weak, and replaced it with the previously existing
...
asd_weak_reference/asd_weak_definition directives
git-svn-id: trunk@32879 -
2016-01-07 22:05:38 +00:00
Jonas Maebe
c452e70f74
+ support for a reference without base or symbol, if the offset is 0
...
(for @ptrtype(0)^.field expressions)
git-svn-id: trunk@32777 -
2015-12-28 15:06:15 +00:00
Jonas Maebe
b4fe4789d6
+ support for constant call parameters on LLVM
...
o reduces the size of the generated LLVM IR, but mainly important for LLVM
intrinsics such as llvm.memcpy.*(), as llc complains if some of their
parameters are not constants (you could work around it by first running
opt or by using clang with optimizations so that the constants, which
were loaded in registers until now, were propagated to the intrinsics
by the time llc saw them)
git-svn-id: trunk@32776 -
2015-12-28 15:06:07 +00:00
Jonas Maebe
787caf4dda
* treat records with {$packrecords c} the same as other records for LLVM
...
o while in principle LLVM can layout those the same as we do, this would
require special treatment in case some fields are not initialised in
a typed record declaration (because then we have to emit padding only
for the skipped fields, and not for any padding between them)
o exception: records we create to represent parameters, as those have to
match the ABI definitions exactly for them to be treated as expected
git-svn-id: trunk@32714 -
2015-12-25 21:05:22 +00:00