Commit graph

15 commits

Author SHA1 Message Date
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