Commit Graph
2918 Commits
Author SHA1 Message Date
David Nadlinger 6a1bc70bd7 Added -float-abi and auto-detection logic for ARM.
Even though this argument design conflates two separate concepts
(ABI and hardware/software implementation), I chose to go
with it since users are liekly know it from GCC and the
combination of softloat operations with hardfloat ABI makes
no sense.

I didn't implement it for old LLVM versions, as ARM EABI
exception handling requires LLVM 3.3+ anyway, without which
LDC would be useless anyway.
2013-05-11 21:07:54 +02:00
David Nadlinger 2fb8d6d51b callWithStackShell for ARM. 2013-05-10 01:52:14 +02:00
David Nadlinger a792ecbaf2 Fix function attribute handling on LLVM 3.3+.
The issue was that when merging in the old attributes, attrs
wasn't assigned to, thus silently dropping all of them
(leading e.g. to noinline being omitted on functions containing
inline asm).

The new code hopefully also makes the intent clearer.
2013-05-09 22:57:33 +02:00
David Nadlinger 10f5d74737 Fix uninitialized vars in EnumDeclaration
'protection' and 'parent' are used in ScopeDSymbol::search
detected by Valgrind). The assignment in semantic0 is enough to
fix the bug, but I also added an initialization to the constructor.

This is a backport of DMD commit 4dfaf02d4d by Don Clugston.
2013-05-09 22:33:08 +02:00
David Nadlinger e5d6cf4dd8 Merge pull request #341 from klickverbot/default-target-cpu
Use generic target CPU by default
2013-05-09 13:16:02 -07:00
David Nadlinger 30bf4e121f Do not optimize for host CPU by default.
GitHub: Fixes #323.
2013-05-09 22:15:19 +02:00
David Nadlinger 251607a1df LLVM 3.3+: Initialize TargetTransformInfo. 2013-05-09 19:51:57 +02:00
David Nadlinger fa729c2faa Backported fix for broken test case. 2013-05-09 17:46:53 +02:00
David Nadlinger 56e35e31a0 Factored out target creation logic to separate functions.
Care was taken to avoid dependencies on the host of
command line globals.

std::string should probably replaced by llvm::StringRef
in some places.
2013-05-09 17:27:35 +02:00
kai 8f2687762a Intrinsics from LLVM 3.3 are also available in LLVM 3.4. 2013-05-09 16:44:40 +02:00
kai 51e1a6cb54 Replace hard-coded path with registry lookup on Windows.
A hard-coded path does not play nicely with a generic installer.
The installation path is now looked up in the registry with the
key SOFTWARE\\ldc-developers\\LDC\\<version>\\Path.
It is the responsibility of the installer to set this value.
2013-05-06 07:52:25 +02:00
kai 41bbc8fbf5 Rewrite the llvm::Linker fix for LLVM 3.3.
The previous commit changed the behaviour a bit. This solution should have an identical result.
2013-05-05 20:27:12 +02:00
kai ebaa3f08b3 Fix LLVM 3.3 build error.
llvm/Linker.h was changed. This commit reflects the new logic.
2013-05-05 18:42:14 +02:00
kai 2e7884a80d Add support for new parameter attribute returned.
Starting with LLVM 3.3 a new parameter attribute `returned` is supported.
The attribute states that the parameter is the return value, too. This is the
case in constructors. (Destructors and postblits do not return `this`.)
Attribute `returned` is now added to the `this` parameter of constructors.
2013-05-05 16:17:34 +02:00
David Nadlinger b86b62835a Merge pull request #335 from klickverbot/avoid-unnecessary-memset
Avoid unnecessary memset when allocating array literals.
2013-05-04 13:24:55 -07:00
David Nadlinger 0a376b9c71 Avoid unnecessary memset when allocating array literals.
This completes the merge of pull request #294. Thanks a lot to
Chris Holdsworth who originally wrote the patch!

GitHub: Fixes #294.
GitHub: Fixes #141.
2013-05-04 21:20:09 +02:00
David Nadlinger f2662c3660 Merge pull request #333 from ldc-developers/vector-init-fix
Fixed vector global initialization for > 1 byte elements.
2013-05-04 00:07:38 -07:00
David Nadlinger 2bf0789364 Fixed vector global initialization for > 1 byte elements. 2013-05-04 06:29:34 +02:00
David Nadlinger c9a2e534fb OS X build fix.
Thanks to Timothee Cour for reporting the issue.
2013-05-02 19:55:57 +02:00
kai a0c259205c Fix endian issue in dmd2/mtype.c.
The initial value for floats was 0 and not NaN due to an endian issue.
This was discovered by a test in object_.d.
2013-04-20 20:03:02 +02:00
kai 308919f371 Revert "Linker flag /LARGEADDRESSAWARE is not required with LLVM 3.3.".
There is still an issue left in LLVM. I need to investigate this further.
2013-04-20 14:07:30 +02:00
kai 47853ac078 Add changes to druntime and phobos. 2013-04-20 14:04:14 +02:00
kai df212f98a4 Fix linking issue with std.math.yl2x (issue #305). 2013-04-19 07:15:35 +02:00
kai d8aed3627e Linker flag /LARGEADDRESSAWARE is not required with LLVM 3.3.
With a recent commit support for the missing relocations was added.
This change removes the flag from the linker command line.
2013-04-15 07:08:46 +02:00
kai bbdf473ef0 Fix for issue #326.
For a foreach (int i, dchar c; str) loop the compiler generates a
delegate with a different type signature then the runtime uses.
The runtime declares the parameters as void* and passes a pointer
to a size_t variable for the index. The code generated by the
compiler expects a ref int. This works on a little endian architecture,
but on a big endian architecture the index is always 0.
This fix changes the parameter type of the passed index to size_t
and generates a cast to the type specified by the user.
2013-04-11 08:23:33 +02:00
kai a28f14320c Wrap LDC specific code in #if IN_LLVM blocks.
Only for ForeachStatement as I have to investigate the code here.
2013-04-09 07:47:46 +02:00
David Nadlinger ac30741e2d Merge pull request #325 from John-Colvin/patch-1
typo
2013-04-08 15:09:10 -07:00
John Colvin e74d9b79b6 typo 2013-04-09 00:02:55 +02:00
David Nadlinger 5e598af541 Merge remote-tracking branch 'redstar/issue133'. 2013-04-02 17:01:45 +02:00
David Nadlinger b8cdfad8c0 global.params.useAvailableExternally -> global.inExtraInliningSemantic.
This will hopefully make the associated code a bit easier
to read.
2013-04-01 21:17:13 +02:00
David Nadlinger 5884f884ed Merged 2.062 frontend/runtime (branch 'merge-2.062'). 2013-04-01 21:05:42 +02:00
David Nadlinger adebe0a077 Merge pull request #322 from redstar/issue318
Workaround for issue #318.
2013-03-31 08:02:11 -07:00
kai 254c055169 Workaround for issue #318.
The std.range tests are failing because of a LLVM bug. See
PR15608 for deatils. The bug is fixed in LLVM 3.3.
The workaroung is to run the std.range test only with -O1.
2013-03-31 15:18:18 +02:00
kai 8625666132 Wrap LDC specific code. 2013-03-31 05:01:40 +02:00
kai 6ab2275f09 Mark string constants as unnamed_addr 2013-03-30 15:28:38 +01:00
kai afb673e5a4 Add core/threadasm.S to druntime.
This is required for PPC and MIPS targets. Results in an empty
object file on other CPU architectures.
2013-03-30 14:29:58 +01:00
kai 971dc95c74 Do not emit warning about vararg for PPC64 2013-03-30 14:11:44 +01:00
kai ec0bc749d0 Calling convention fastcc is not implemented on PPC64. 2013-03-29 21:45:12 +01:00
kai e49082840f Fix comments in abi-ppc64 files. 2013-03-29 20:15:37 +01:00
kai 312a85ce01 Fix a buffer overrun on Linux/PPC64.
The buffer in realToMangleBuffer() is too small for a longdouble.
2013-03-24 19:42:18 +01:00
kai b13f3d3164 Merge branch 'master' into merge-2.062
Conflicts:
	runtime/druntime
2013-03-24 19:39:39 +01:00
David Nadlinger b889c20dca Merge pull request #315 from klickverbot/o-o3
Make '-O' equivalent to '-O3'.
2013-03-23 09:52:58 -07:00
kai dce378ba75 Return type must be of type DIComposite. 2013-03-23 16:21:21 +01:00
kai c8d98ad31c More Dwarf debug code changes.
Add a fix for LLVM 3.3 (`createTemporaryType()` was removed) and add
linkage name to `createGlobalVariable()` (new in 3.3).
2013-03-23 15:40:29 +01:00
David Nadlinger 4cd967c4b6 Workaround for private variables pulled in from CTFE'd template functions. 2013-03-22 11:23:34 +01:00
David Nadlinger 0c4a987fc4 Temporarily disable failing test. 2013-03-18 13:34:47 +01:00
David Nadlinger 862ece3ca4 Fix -lib with fully specified output name and '-c'.
The whole output path handling code is in dire need of a
cleanup/rework.
2013-03-18 13:33:55 +01:00
David Nadlinger 7a58b2c1b2 Backport DMD pull request #1760.
Fixes DMD test case 'xtest46'.
2013-03-18 13:05:04 +01:00
kai 7d65a311b1 More changes to std::vector usage.
Replace with std::vector with static array, llvm::SmallVector or
add code to reserve space.
2013-03-17 23:58:30 +01:00
David Nadlinger 99ebf1db6a Bump runtime version to 2.062. 2013-03-17 19:53:35 +01:00