Commit Graph

2921 Commits

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