Hard code in so real == double. This is an issue when cross compiling…
… since dmd uses the host C libs to determine the properties of type real. This change breaks ldc for native compiles, will have to come up with better solution.
When calling a C variadic (...), pass structs by value instead of ref…
…erence. This will match with C calling convention.
Turns all TLS vars into plain old globals. Useful if TLS is not supported by the target OS.
Add implementation similar to dmd -vtls to print all variables going into TLS.
Merge branch 'ios-2.064' into ios-merge-release-0.13.0
This brings together the iOS changes with the final release-0.13.0 with dmd 2.064.
real == double conditional on USE_REAL64
USE_REAL64 must be defined to make real types be treated as double, even if the native host has a higher precision long double. The makes commit ed74a7c opt-in and not on by default.
Set versions ARM_SoftFP & D_HardFloat instead of ARM_SoftFloat & D_SoftFloat for option -mfloat-abi=softfp (function calls use soft float ABI but using hardware floating point instruction).
IPhoneOS and OSX are both set when triple OS is ios, as in thumb-apple-ios. This works like the C macros TARGET_OS_IPHONE TARGET_OS_MAC where both are set because iPhone OS is considered a variant of Mac OS X.
ABI for iOS that passes structs as values
Initial version of IOSTargetABI for IPhoneOS on ARM. It still has more work to go. Main difference is passing structs as values without byval attribute. This works around an LLVM problem with "top-down list latency scheduler" pass that gets stores and loads out of order.
Lookup default float-abi for thumb same as arm
Was always defaulting thumb to soft, now uses same rules for arm. The end result is that thumbv7-apple-ios now defaults to softfp correctly.
Fix cmake bug when ldc is a submodule
Allow ldc to be a submodule. This uses changes from https://github.com/rpavlik/cmake-modules.
Merge branch 'ios' into ios-merge-2.067
Conflicts: dmd2/mars.h gen/tocall.cpp runtime/druntime runtime/phobos
Merge branch 'ios' into ios-merge-release-0.15.2
Pulling ios changes into ldc-v0.15.2.-beta1. This version does not work due to a change in ABI for variadics. Conflicts: gen/tocall.cpp runtime/druntime runtime/phobos
Change iOS extern(D) ABI from fastcc to ccc
The LDC ABI functions with 0.15.2 changed variadic calls so that fastcc (llvm::CallingConv::Fast) no longer compiles. Now using ccc (llvm::CallingConv::C). There is an LLVM optimizer bug that generates incorrect code for functions like std.math.expi when using ccc. It turns out that the bug does not happen after upgrading from LLVM 3.5.1 to LLVM 3.6. This means that after this commit, use LLVM 3.6 or better.
Change iOS extern(D) ABI from fastcc to ccc
The LDC ABI functions with 0.15.2 changed variadic calls so that fastcc (llvm::CallingConv::Fast) no longer compiles. Now using ccc (llvm::CallingConv::C). There is an LLVM optimizer bug that generates incorrect code for functions like std.math.expi when using ccc. It turns out that the bug does not happen after upgrading from LLVM 3.5.1 to LLVM 3.6. This means that after this commit, use LLVM 3.6 or better.
Merge merge-2.067 into ios-merge-2.067
Conflicts: runtime/druntime runtime/phobos
Gather source from new phobos subdirs std/algorithm, range, regex, and others.
Merge branch 'merge-2.067' into ios-merge-2.067
Conflicts: runtime/phobos
Merge branch 'merge-2.067' into ios-merge-2.067
Conflicts: runtime/druntime runtime/phobos