Commit graph

25 commits

Author SHA1 Message Date
Martin Kinkelin
4a23399236 Aim for consistent #includes (order + dir prefix)
I surely missed a few.
2018-10-20 16:19:46 +02:00
Martin Kinkelin
7776c4081b Upgrade frontend & libs to v2.083.0-beta.1 2018-10-20 16:19:46 +02:00
Martin Kinkelin
a133ffad56 MSVC: Port Rainer's upstream extern(C++) method ABI fixes
From https://github.com/dlang/dmd/pull/8330.
2018-06-19 20:13:02 +02:00
Martin Kinkelin
3ca43c51b8
Use IndirectByvalRewrite for non-POD args and extern(C++) on Posix (#2728)
Fixing one aspect of issue #2702; not tackling the different destruction
rules yet.
2018-06-19 20:09:35 +02:00
Martin Kinkelin
93515eb32e
Merge pull request #2719 from kinke/stable
Upgrade to upstream `stable`
2018-06-01 20:42:44 +02:00
Martin Kinkelin
43296da0a2 Upgrade to upstream stable (0c4d5bb5) 2018-05-31 17:22:09 +02:00
Martin Kinkelin
29d609d63d Refactoring: Introduce TargetABI::reverseExplicitParams() 2018-05-30 22:42:00 +02:00
Martin Kinkelin
92913d4c08 Store front-end D function type in IrFuncTy
As we do for IrFuncTyArg. We'll need access to the front-end linkage for
the Posix ABIs too in order to implement indirect-by-value passing of
non-PODs for `extern(C++)`.
2018-05-30 22:41:48 +02:00
Martin Kinkelin
8faab8b684 Refactoring: Add ABIRewrite::applyTo() for convenience
Allowing the ABIRewrite to adapt the IrFuncTyArg appropriately and
reducing code duplication.
2018-05-26 22:09:37 +02:00
Martin
17a2c8ace2 Attempt to fix PPC64-LE, MIPS64 and ARM/AArch64 ABIs
Most importantly, make sure sret is enforced for all non-POD structs as
done for all other ABIs, and don't treat extern(D) any different from the
C ABI wrt. return values anymore.

Also reduce code duplication via common TargetABI patterns.
2016-11-29 22:32:14 +01:00
Joakim
5eef53e994 Differentiate between the soft and hard floating-point ABIs for ARM, to decide
whether to return the address of structs with floating-point numbers in
general-purpose registers.
2016-08-12 13:40:18 +05:30
Martin
82005009e7 Refactor and fix intrinsics for variadic functions
I.e., va_start(), va_copy() and va_arg().
2016-06-28 22:40:14 +02:00
Martin
dd21a805ee Trim signature of method ABIRewrite::type() 2016-05-29 11:04:29 +02:00
David Nadlinger
219758756c Merge branch 'merge-2.071' 2016-05-06 19:24:48 +01:00
Kai Nacke
e55823fd09 Merge remote-tracking branch 'origin/ltsmaster' 2016-04-23 11:19:20 +02:00
Dan Olson
deb3847f75 ARM AAPCS: struct rewrite with 8-byte alignment
structs with 8-byte alignment or greater needs to be rewritten as
array of i64 to be compatible with the AAPCS C ABI.
2016-04-19 05:16:38 +00:00
Rainer Schuetze
c74d4c2231 Merge remote-tracking branch 'remotes/origin/master' into merge-2.071
# Conflicts:
#	runtime/druntime
#	tests/d2/dmd-testsuite
2016-04-17 21:24:56 +02:00
Dan Olson
cd216538f9 Merge branch 'master' into objc-wip 2016-04-08 22:38:39 -07:00
David Nadlinger
9f998a398d Initial merge of upstream v2.071.0-b2
Notably, the glue layer side of the changed multiple interface
inheritance layout (DMD a54e89d) has not been implemented yet.

This corresponds to DMD commit 3f6a763c0589dd03c1c206eafd434b593702564e.
2016-04-03 15:15:14 +01:00
Dan Olson
462b089492 Move Objective-C runtime choice to TargetABI 2016-03-23 23:54:49 -07:00
Kai Nacke
0924a8c233 Fix compile errors 2016-03-08 20:36:07 +01:00
Dan Olson
ae99d9c713 Support ARM AAPCS style va_list for C++ mangling
AAPCS defines va_list as a std::__va_list struct, which is needed to
interface with C++.
2016-03-07 16:59:13 +00:00
Dan Olson
ad1bb14bd6 ARM: Re-reverse parameter order for extern(D)
Follow in footsteps of 5e3785159f,
allowing opCmp to behave as expected.

This allows runnable/test12.d and test5854.d to pass.
2016-02-25 19:17:02 +00:00
Dan Olson
9751f3f20f ARM: Use byval attr for types > 64-bytes
Pass values > 64-bytes with byval attribute.  This fixes a codegen
problem and was discovered by examining what clang does.  This allows
runnable/mars1.d to compile and run with -O3, same for std.datetime
and std.random unittests.
2016-02-25 19:11:41 +00:00
Dan Olson
b9b4564d22 Implement ARM AAPCS ABI
This is the bulk of the AAPCS (Procedure Call Standard for the ARM
Architecture) used for C interop.  This will be used for both arm and
thumb target triples.  The extern(D) ABI tries to follows the AAPCS with
a few exceptions.
2016-02-05 09:04:09 -08:00