Commit Graph

3287 Commits

Author SHA1 Message Date
David Nadlinger
fc8e0c4c20 Revert -float-abi implementation.
The new command line option conflicted with a builtin LLVM 3.0
one. The functionality will be added back in after the 0.11.0
release branch has been created.

This reverts commit 6a1bc70bd7 and
subsequent fixes.
2013-05-12 00:18:44 +02:00
David Nadlinger
7500673395 Merge pull request #348 from klickverbot/fix-eh
Update catch landingpad codegen to match latest druntime change.
2013-05-11 14:56:04 -07:00
David Nadlinger
f894a7809c Update catch landingpad codegen to match latest druntime change. 2013-05-11 23:29:39 +02:00
kai
80c4f953c0 Add test case for issue #328 2013-05-11 23:05:34 +02:00
kai
2e4b85d2d6 Fix for issue #328.
The wrong pointer is passed to the landing pad. This wrong pointer is used
if the stack unwinding resumes.
2013-05-11 22:18:23 +02:00
David Nadlinger
7fe8406ec2 Merge in test cases for GitHub issue #340. 2013-05-11 22:03:08 +02:00
David Nadlinger
23d82b9620 Only specify -m32/-m64 for archs where the variants exist. 2013-05-11 21:49:19 +02:00
David Nadlinger
8da8bdd209 LLVM pre-3.2 does not have llvm::Triple::Android.
Strangely enough, the Travis pull request status was
definitely green before I merged it in.
2013-05-11 21:44:05 +02:00
David Nadlinger
e37f0e0d35 Fix ARM default floating-point ABI.
It shouldn't really matter, as we probably aren't going to
support anything but AAPCS anytime soon.
2013-05-11 21:33:20 +02:00
David Nadlinger
17ef7f7d09 Merge pull request #345 from klickverbot/template-function-label
Fix inline asm labels in template functions.
2013-05-11 12:24:30 -07:00
David Nadlinger
b5dd0e07f2 Merge pull request #344 from klickverbot/float-abi
Added -float-abi and auto-detection logic for ARM.
2013-05-11 12:17:19 -07:00
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
5742a0219c Fix inline asm labels in template functions.
This is a giant kludge to avoid a redesign of the inline asm
handling code. I'd be glad if somebody came up with a better
solution.

GitHub: Fixes #340.
2013-05-11 21:01:24 +02:00
David Nadlinger
15fd67be03 Remove code for unimplemented goto-into-asm check.
The check was never fully implemented. We need to look into
this again, as currently we fail with a fairly unintellegible
LLVM ICE (added as GitHub #).
2013-05-11 20:18:34 +02:00
David Nadlinger
8b9deecf34 Remove dead code. 2013-05-11 20:12:25 +02:00
David Nadlinger
d15a3bacac Minor cleanup. 2013-05-11 18:43:41 +02:00
kai
91d653c730 Backport of changes for Linux/PPC64.
Most endian issues and some other problems are gone. Makes the whole thing fly a lot easier.
2013-05-10 14:00:36 +02:00
kai
e233f803ff Merge branch 'memcpy' 2013-05-10 13:48:39 +02:00
kai
fa3054c7cc Fix uninitialized var in TemplateDeclaration.
This is a partial backport of 214b0fdb26.
2013-05-10 13:10:40 +02:00
kai
522c06ff7f Do not memcpy with same source and destination.
This can happen for sret_args. Drop the assignment in this case.
2013-05-10 12:59:14 +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